C++模板
泛型
泛型,是一种将类型参数化以达到代码复用的技术,C+ +中使用模板来实现泛型。
模板(template)
格式:template <typename/class T>。
也可以指定多个类型,template <typename A, typename B, typename C> C add(A a, B b),在调用的时候,指定参数类型即可。
如果有调用模板,编译器会根据参数类型,生成不同的函数。没有调用就不会生成。
typename和class是等价的。
模板的声明和实现如果分离到.h和.cpp中,会导致链接错误。
template <typename T>
T add(T a, T b)
{
return a + b;
}
int main()
{
cout << add<int>(1, 2) << endl;
cout << add<double>(1.1, 2.1) << endl;
cout << add(1, 2) << endl;
cout << add(1.1, 2.1) << endl;
return 0;
}
类模板,类模板的友元函数
template<typename T>
class List
{
// 这里要加上尖括号,可以不加空格
// |
// v
friend ostream operator<< <>(ostream &cout, const List<T> &);
// friend ostream operator<<<>(ostream &cout, const List<T> &);
T *list = NULL;
};
