如果没有函数模板 通过函数重载实现不用类型的操作 nt max(int a int b) return a>b? a: bi float max(float a, float b) return a>b? a: bi 北大青鸟
5 如果没有函数模板… • 通过函数重载实现不用类型的操作 int max(int a, int b) { return a > b ? a : b; } float max(float a, float b) { return a > b ? a : b; } ……
函数模板4-1 对各种数据类型,执行完全相同的操作 ·根据函数调用中提供的参数,编译器自动 实例化不同的对象代码函数 6 北大青鸟
6 函数模板 4-1 • 对各种数据类型,执行完全相同的操作 • 根据函数调用中提供的参数,编译器自动 实例化不同的对象代码函数
函数模板4-2 #include 返回两个元素 template 的最大值 Tmax四Ta,Tb) return a>b? a: b; void main o cout<<"max(20,30)="<<max(20,30)<end1; cout < " max('t' iv)=" << max('t ivi)<< endli cout<<"max(10.1,15.2)="<<max(10.1,15.2)<<end1 北大青鸟
7 函数模板 4-2 #include template T max(T a, T b) { return a > b ? a : b; } void main() { cout << "max(20, 30) = " << max(20, 30) << endl; cout << "max('t', 'v') = " << max('t', 'v') << endl; cout << "max(10.1, 15.2) = " << max(10.1, 15.2) << endl; } 返回两个元素 的最大值
函数模板43 编译器自动生成 int max ( int ar int b) return a>b? a b: float max(float a, float b) return a>b? a: bi char max(char a, char b) return a>b? a: b 北大青鸟
8 函数模板 4-3 • 编译器自动生成 int max(int a, int b) { return a > b ? a : b; } float max(float a, float b) { return a > b ? a : b; } char max(char a, char b) { return a > b ? a : b; }