在编译阶段,类名不产生符号。
1.类模板的特例化:类模板的完全特例化和类模板的部分特例化
//类模板的完全特例化
template<>
class A<int,double>
{
int a;
double b;
};
//类模板的部分特例化
template<typename T>
calss B<int,T>
{
int a;
T b;
};
2.同一模板实例化的两种不同类型也可以赋值拷贝,需要自己实现成员函数的模板,这时候需要声明一个类是另一个类的友元,这里是一对多的友元关系
3.当我们自己实现了拷贝构造函数的模板之后,可以实现不同类型的拷贝构造,这种模板可以和普通的同种类型的拷贝构造共存,但是这种自己实现的拷贝构造函数只能接收不同类型,当它实现同种类型的构造拷贝的时候就会出错。
4.只有先有模板,才能进行实例化,在我们进行实例化之前先看我们是否有相应的模板。
5.类模板,函数模板,成员方法模板都有特例化的版本.
6.普通的成员方法,成员方法模板,模板的特例化可共存,他们三者之间功能不会重叠,各自实现自己的功能。
- `
//E实例化的栈是原模版的友元
template<typename E>
Friend class stack;
1)类模板的友元声明:
2)普通类的友元声明: