模板编程中的几点问题
类模板中头文件和源文件分离的编译问题
1、在泛型编程时,
声明和实现要放置在一起
(因为某些编译器不支持分离)
2、非泛型编程
声明和实现分开
可以为模板指定默认类型
template<typename T=int> class Stack{ } Stack<> stack;
//Stack<int> stack; //stack is a stack for int
模板中放置非类型参数
template<typename T, int capacity> class Stack{ ... private: T elements[capacity]; int size; } Stack<char,100> charStack;
模板与继承
1、一个非模板类可以继承自一个模板类的实例类
2、一个模板类可以继承自一个非模板类
3、一个模板类可以继承自一个模板类
4、一个非模板类不可以继承自一个模板类
友元函数在模板类中的用法与非模板类中是一致的
类模板中可以定义静态成员,每个模板特化都有自己的静态成员拷贝(每个模板特化的静态成员是独立的)