1.模板类虚函数
1.1错误用法
template <typename T>
class MyTemplateClass {
public:
MyTemplateClass() {}
virtual ~MyTemplateClass() {}
// 1.声明并实现,编译成功
virtual void MyVirtualFunction(int* ptr) {
// 默认实现
*ptr = 1;
std::cout << " the num of ptr: " << *ptr << std::endl;
}
// 2.只有声明,没有实现;如果不提供这个函数的定义,模板类在实例化的时候没法实例化这个模板函数,导致link找不到;编译失败
virtual void MyVirtualFuntion(int* ptr);
// 3. 编译成功
virtual void MyVirtualFuntion(int*) {};
// 4. 编译成功,定义成纯虚函数(要求子类必须实现)
virtual void MyVirtualFuntion(int*) = 0;
};