1. 程式人生 > 其它 >04模板學習之普通類繼承類模板和類模板繼承類模板的區別

04模板學習之普通類繼承類模板和類模板繼承類模板的區別

技術標籤:#模板學習c++

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> {};