函数重载和模板的使用:函数重载:创建同名但参数列表不同的函数,编译器根据参数选择最佳匹配。模板:创建可针对不同数据类型参数化的代码片段,使用模板参数作为类型或值。实战案例:利用模板和重载创建可比较结构体,方便对象排序和比较。
C++ 函数重载和模板的深入理解与应用
函数重载
函数重载允许创建同名但参数列表不同的多个函数。当编译器遇到一个函数调用时,它将选择参数列表与实际参数最匹配的重载函数。
立即学习“C++免费学习笔记(深入)”;
void print(int x);
void print(double x);
void print(string x);
int main() {
print(10); // 匹配 int 重载
print(10.5); // 匹配 double 重载
print("Hello"); // 匹配 string 重载
}
模板
模板是创建可被不同数据类型参数化的代码片段。模板参数可以用作类型或值。
创建模板函数:
template <typename T>
void swap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
使用模板函数:
int main() {
int a = 10, b = 20;
swap(a, b); // 使用 int 模板参数
cout << a << " " << b << endl;
}
实战案例:创建可比较结构体
使用模板和重载,我们可以创建可比较结构体,以便轻松地对对象进行排序和比较。
创建可比较结构体:
template <typename T>
struct Comparable {
T value;
bool operator<(const Comparable<T>& other) const {
return value < other.value;
}
// ... 其他操作符重载(>、== 等)
};
使用可比较结构体:
struct MyStruct {
int x;
double y;
Comparable<int> c;
};
int main() {
MyStruct s1{1, 2.5, 10}, s2{2, 3.0, 15};
if (s1.c < s2.c) {
cout << "s1.c is less than s2.c" << endl;
}
}
通过函数重载和模板的结合使用,我们可以创建适应性强且可重复使用的代码,解决各种编程问题。