1.泛型编程
如何实现一个通用的交换函数?
void Swap(int& left,int& right)
{int temp = left;left = right;right = temp;
}void Swap(double& left,double& right)
{double temp = left;left = right;right = temp;
}void Swap(char& left,char& right)
{char temp = left;left = right;right = temp;
}
使用函数重载虽然可以实现,但是有几个不好的地方:
1.重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。
2.代码的可维护性比较低,一个出错可能所有的重载均出错。
2.函数模版
2.1函数模版概念
函数模版代表了一个函数家族,该函数模版与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。
2.2函数模版格式
//template<typename T>
template<class T>
void Swap(T& left,T& right)
{T temp = left;left = right;right = left;
}
3.类模版
3.1类模版定义格式
template<class T1,...,class Tn>
class 类模版名
{//类内成员定义
};
3.2类模版的实例化
类模版的实例化需要再模版名字后面加<类型>,类模版名字不是真正的类,而实例化的结果才是真正的类。
//Stack是类名,Stack<int>才是类型
Stack<int> st1; // int
Stack<double> st2; // double