當類模板碰到繼承時,需要注意一下幾點:
1.當子類繼承的父類是一個類模板時,子類在聲明的時候要指定出父類中的類型;
2.如果不指定,編譯器無法給子類分配內存;
3.如果要靈活指定父類中的T的類型,子類也需要變成模板類;
#include<iostream> using namespace std; template<class T> class Base { public: T m; }; class Son1 :public Base<int> { }; template<class T1,class T2> class Son2 :public Base<T1> { public: Son2() { cout << "T1的數據類型為:" << typeid(T1).name() << endl; cout << "T2的數據類型為:" << typeid(T2).name() << endl; } T2 obj; }; void test() { Son1 s1; Son2<int,char> s2; } int main() { test(); system("pause"); return 0; }
輸出: