北大青鸟 c 第十章 模板 Ⅴ ersion3.0 CHA
Version 3.0 模板 第十章
回顾 虚函数 纯虚函数 抽象类 动态绑定 虚析构函数 北大青鸟
2 回顾 • 虚函数 • 纯虚函数 • 抽象类 • 动态绑定 • 虚析构函数
目标 函数模板 类模板 ·标准模板库(STL) 北大青鸟
3 目标 • 函数模板 • 类模板 • 标准模板库(STL)
模板的概念 C+中的模板提供了重用源代码的方法 ·两种类型的模板 类模板 函数模板 北大青鸟
4 模板的概念 • C++中的模板提供了重用源代码的方法 • 两种类型的模板 – 类模板 – 函数模板
如果没有函数模板 通过函数重载实现不用类型的操作 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; }
函数模板44 演示函数模板的使用 北大青鸟
9 函数模板 4-4 演示函数模板的使用
类模板4-1 提供了对类中的类型进行参数化的方法 ·从类模板产生类的过程称为模板的实例化 定义模板类的对象 classname objectname(arglist)i 北大青鸟
10 类模板 4-1 • 提供了对类中的类型进行参数化的方法 • 从类模板产生类的过程称为模板的实例化 定义模板类的对象 classname objectname(arglist);