通过函数重载和函数模板,你可以扩展和定制 c++++ 自身函数:函数重载:创建同名但参数不同的函数,根据参数调用特定函数。函数模板:创建适用于多种数据类型的通用函数,使用类型参数表示数据类型灵活性。
C++ 自身函数如何扩展和定制
引言
C++ 提供了丰富的自身函数,涵盖输入/输出、字符串处理和内存管理等各种任务。然而,有时我们可能需要扩展或定制这些函数以满足特定需求。本文将指导你如何使用 C++ 中的函数重载和函数模板来实现此目的。
立即学习“C++免费学习笔记(深入)”;
函数重载
函数重载允许你为具有相同名称但参数列表不同的不同函数创建多个定义。当调用重载函数时,编译器根据参数的类型和数量来确定要调用的特定函数。
例如,你可以重载 print() 函数,使其支持不同的数据类型:
#include <iostream>
using namespace std;
void print(int x) {
cout << "int: " << x << endl;
}
void print(double x) {
cout << "double: " << x << endl;
}
int main() {
print(10); // 调用 print(int)
print(3.14); // 调用 print(double)
return 0;
}
函数模板
函数模板是一种更通用的函数重载形式,允许你创建适用于多种数据类型的单一函数定义。函数模板使用类型参数,表示它可以在多种类型上操作。
例如,你可以创建一个适用于任何数据类型的 swap() 函数模板:
#include <iostream>
using namespace std;
template <typename T>
void swap(T &a, T &b) {
T temp = a;
a = b;
b = temp;
}
int main() {
int x = 10, y = 20;
double a = 3.14, b = 2.71;
swap(x, y); // 交换整数
swap(a, b); // 交换双精度浮点数
return 0;
}
实战案例
让我们扩展 C++ 的 vector 类,添加一个求和元素的方法:
扩展 header 文件:
#include <vector>
using namespace std;
class MyVector : public vector<int> {
public:
int sum() {
int result = 0;
for (int x : *this) {
result += x;
}
return result;
}
};
演示:
#include "MyVector.h"
int main() {
MyVector v = {1, 2, 3, 4, 5};
int sum = v.sum();
cout << "和: " << sum << endl;
return 0;
}
通过自定义函数和函数模板,你可以轻松地扩展和定制 C++ 自身函数,以满足你的特定编程需求。