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