大学C++程序设计教程
西安交通大学
计算机教学实验中心.
第12章模板与异常处理
本章目标
掌握函数模板概念和使用
掌握类模板概念和使用
了解异常处理机制
1
授课内容
模板
异常处理机制
友元
程序设计举例
实例编程矩阵类
2
一、模板
函数模板
template <<模板参数表>>
<类型> <函数名>(<参数表>)
{
…
}
类模板
3
函数模板
定义一个函数模板的形式为:
其中<模板参数表>中的模板参数的形式为class <类型参数>,这里关键字class与一般所讲的类无关,而是与<类型参数>一起说明这是一个内部类型或用户自己定义的数据类型。
在使用模板函数时,模板中的类型参数可用一个实际类型替换,从而达到了类型通用的目的。
当类型参数的含义确定后,编译器将以函数模板为样板,生成一个函数。
4
[例12-1]定义求两个数据最大值的函数模板
#include <iostream>
#include <string>
using namespace std;
template <class T>
T Max(T a, T b)
{
return a>b?a:b;
}
5
int main()
{ int i1 = 3, i2 = 5;
double d1 = , d2 = ;
string str1("xjtu"), str2("xian");
cout << "Type int: " << Max(i1, i2) << endl;
cout << "Type double: " << Max(d1, d2) << endl;
cout << "Type string: " << Max(str1, str2) << endl;
return 0;
}
6
函数模板的几点注意事项
(1)在函数模板的参数表中,至少有一个参数的类型为模板的类型参数。另外,函数的返回值的类型也可以是该类型参数。
(2)模板中可以带有多个参数类型。例如:
template <class T1, class T2, class T3>
void func1(T1 arg1,T2 arg2, T3 arg3)
{
…
}
7
(3)函数可以带有模板参数表中未给出的、已存在的数据类型的参数。例如:
template <class T>
T func2(T arg1,int arg2)
{
…
}
8
类模板
类是对问题空间的抽象,而类模板则是对类的抽象,即更高层次上的抽象。与函数模板相似,程序中可以通过高度抽象首先定义一个类模板,然后通过使用不同的实参生成不同的类。
类模板的定义方法为:
template <class <类型参数>>
class <类名>
{
……
};
9
第12章 模板与异常处理 来自淘豆网m.daumloan.com转载请标明出处.