前言
C++ 模板是实现泛型编程的核心工具,它允许我们编写与类型无关的代码。模板在编译时进行实例化,根据实际使用的类型生成具体代码,因此不会带来额外的运行时开销。
为什么需要模板?
在编写函数或类时,如果希望它们能处理多种数据类型(如 int、double、string),传统方法是使用函数重载。但这往往会产生大量重复代码,或者导致类型信息丢失。
场景: 编写一个求两个数最大值的函数,支持 int、double 和 string。
1. 传统方法:函数重载
#include <iostream>
#include <string>
using namespace std;
// 为 int 重载
int max(int a, int b) {
cout << "int version\n";
return a > b ? a : b;
}
// 为 double 重载
double max(double a, double b) {
cout << "double version\n";
return a > b ? a : b;
}
// 为 string 重载
string max(const string& a, const string& b) {
cout << "string version\n";
return a > b ? a : b;
}
int main() {
cout << max(3, 5) << "\n"; // int version
cout << (, ) << ;
cout << (, ) << ;
;
}


