天天看點

c++面向對象進階程式設計 學習十一 類模闆、函數模闆、成員模闆

namespace經驗談:

團隊中函數或類的名字可能會沖突,是以使用namespace進行區分。

c++面向對象進階程式設計 學習十一 類模闆、函數模闆、成員模闆

類模闆:

template<typename T>

c++面向對象進階程式設計 學習十一 類模闆、函數模闆、成員模闆

函數模闆:

template<class T>,此處class可改成typename

函數模闆在使用的時候,不必指明類型,因為函數模闆是去調用該函數,會在調用的時候傳入參數,編譯器會對函數模闆進行參數推導,而類模闆則需指明類型。

c++面向對象進階程式設計 學習十一 類模闆、函數模闆、成員模闆

成員模闆:

在一個類中有一個成員,該成員是template,則稱該成員為成員模闆。

c++面向對象進階程式設計 學習十一 類模闆、函數模闆、成員模闆
c++面向對象進階程式設計 學習十一 類模闆、函數模闆、成員模闆
template <class U1,class U2>
pair(const pair<U1,U2>&p):
first(p.first),second(p.second){}
           

該pair類允許任意的T1,T2,也允許任意的U1,U2,但是在編譯的過程中必須滿足first(p.first),second(p.second)的初始化指派過程,在該示例中即,鲫魚,麻雀初始化指派到first和second中沒有問題,而反之則編譯不能通過。

繼續閱讀