1. 父类一般类,子类是模板类,和普通的用法类似
#include#include using namespace std; //父类是一般类 class Father { public: Father(int age) { this->age = age; } int getAge() const { return age; } private: int age; }; template //子类是模板类 class Son : public Father { public: Son(T age) : Father(age) {} }; int main(void) { Son son(20); cout << son.getAge() << endl; system("pause"); return 0; }
2.子类是一般类,父类是模板类,在继承时必须在子类里实例化父类的类型参数
#include#include using namespace std; template //父类是模板类 class Father { public: Father(T age) { this->age = age; } T getAge() const { return age; } private: T age; }; //子类是一般类, 继承模板类时, 必须实例化父类参数 class Son : public Father { public: Son(int age) : Father(age) {} }; int main(void) { Son son(20); cout << son.getAge() << endl; system("pause"); return 0; }
3.父类和子类都时模板类时,子类的虚拟的类型可以传递到父类中
#include#include using namespace std; template //父类是模板类 class Father { public: Father(T age) { this->age = age; } T getAge() const { return age; } private: T age; }; template //子类是模板, 子类模板类型可以传入到父类中 class Son : public Father { public: Son(T1 age) : Father(age) {} }; int main(void) { Father father(40); cout << "Father: " << father.getAge() << endl; Son son(20); cout << "Son: " << son.getAge() << endl; system("pause"); return 0; }
结论:
子类从模板类继承的时候,需要让编译器知道 父类的数据类型具体是什么
- 父类一般类,子类是模板类, 和普通继承的用法类似子类是一般类,父类是模板类,继承时必须在子类里实例化父类的类型参数父类和子类都时模板类时,子类的虚拟的类型可以传递到父类中



