04模板學習之普通類繼承類模板和類模板繼承類模板的區別
阿新 • • 發佈:2020-12-07
04模板學習之普通類繼承類模板和類模板繼承類模板的區別
1 普通類繼承類模板
普通類繼承模板時,繼承的模板類必須確定型別,否則無法通過編譯。因為普通類編譯時需要確定基類的型別,而基類卻無法確定,所以必定報錯。
template<class T>
class Base {
public:
Base(){}
};
//普通類繼承類模板,int必須寫,否則報錯
class Son :public Base<int> {
public:
Son(){}
};
2 類模板繼承類模板
類模板繼承類模板不像普通類繼承類模板那樣,不需要寫確定的型別,因為類模板繼承後仍是類模板,所以只需要寫上T型別的即可,以便在被呼叫時通過子類模板確定基類模板。
template<class T>
class Animal {
public:
void Jiao() {
cout << mAge << "歲動物在叫!" << endl;
}
public:
T mAge;
};
//類模板繼承類模板不需要寫確定的型別,只需要寫模板的型別即可
template<class T>
class Cat : public Animal<T> {};