【C++基础】模板参数与模板继承
模板參數(shù)
默認(rèn)類型參數(shù)
函數(shù)參數(shù)可以設(shè)定一個(gè)默認(rèn)值,我們現(xiàn)在可以對(duì)類模板的類型參數(shù)設(shè)定一個(gè)默認(rèn)類型。
指定泛型Stack的默認(rèn)類型參數(shù)為 int
template<typename T = int> class Stack{... };當(dāng)我們這樣定義一個(gè)對(duì)象時(shí):
Stack<> stack;使用默認(rèn)的方式,或者說隱式的方式,實(shí)例化了一個(gè)stack對(duì)象。
這樣的好處是:指定默認(rèn)類型之后,使用者就沒必要去寫了。
非類型參數(shù)
在模板前綴中使用非類型參數(shù)。
實(shí)例化模板時(shí),非類型實(shí)參應(yīng)該是對(duì)象。
如下:
如同std里面的array的初始化:std::array<int,100>;
除了基本數(shù)據(jù)類型外,非類型實(shí)參是對(duì)象的時(shí)候是這樣的;
注意,參數(shù)默認(rèn)值必須是在最右邊,當(dāng)然我們也可以全部定義一個(gè)默認(rèn)值,這樣就不會(huì)有問題了。
注意模板成員函數(shù)的聲明也需要進(jìn)行修改。
就是這樣:
模板繼承
關(guān)于模板繼承的幾個(gè)原則:
1、普通類可從類模板實(shí)例繼承。一個(gè)模板實(shí)例化之后就是一個(gè)類了,類與類之間可以繼承。
2、模板可從普通類繼承
3、類模板可繼承類模板
也就是說,一個(gè)類是不可以從一個(gè)模板繼承的,其他的三種組合方式都是可以的。
何時(shí)何地使用模板
使用別人寫好的模板庫(kù)時(shí)
對(duì)不同類型的數(shù)據(jù)做類似處理 (算法、容器、遍歷等)
OOP or GP
泛型編程在C++中廣泛使用,經(jīng)常可以取代面向?qū)ο缶幊獭?br /> 幾乎整個(gè)C++標(biāo)準(zhǔn)庫(kù)都依賴于泛型編程。
在C++標(biāo)準(zhǔn)庫(kù)較少使用繼承和運(yùn)行時(shí)多態(tài)。異常、字符串和IO流中使用了較多的繼承。
總結(jié)
以上是生活随笔為你收集整理的【C++基础】模板参数与模板继承的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++基础】 类模板
- 下一篇: 【C++基础】STL迭代器