成員函式模板

2021-07-04 02:12:07 字數 666 閱讀 2522

1 背景

參考資料[1]p218的條款45:運用成員函式模板接受所有相容型別,提出了如何使得自定義的智慧型指標支援隱式型別轉換的方法,其中用到的技巧就是使用成員函式模板。關於其詳細的原理,書中已經說的很清楚,只是在程式設計的過程中會遇到挫折,故在此記錄一下成功通過的編譯的**(見下一章)。

2 **

template< class t >

class smartptr

// copy constructor

template< class y >

smartptr( smartptr< y > const &other )

};class top{};

class middle:public top

{};int main( void )

說明:

a)new middle要使用到建構函式,因此smartptr的第乙個建構函式必須定義,否則無法通過編譯;

b)將middle型指標轉換為top型指標,需要用到copy建構函式,因此smartptr的第二個建構函式必須定義,否則無法通過編譯。

參考資料

[1]effective c++,中文版(第三版)

成員函式模板

真實指標支援隱式轉換 1 derived class指標可以隱式轉換為base class指標 2 指向non const物件 的指標可以轉換成 指向const物件 的指標。智慧型指標 必須編寫乙個成員函式模板。因為我們無法寫出所有的智慧型指標的建構函式,一旦derived體系有新的補充就又要根據其...

C 類模板的成員函式模板寫法

這幾天本來想將lua tinker移植到linux上去的,但是由於vc中的模板寫法與gcc中的模板寫法有些不同之處,比如下面一段 struct pop template static char invoke lua state l,int index template static const ch...

模板 函式模板

c 程式設計 資料結構與程式設計方法 例15.8 利用函式過載技術,求兩個整數 字元 浮點數或字串中的較大值,需要編寫4個函式larger。而c 通過提供函式模板,簡化了過載函式據的過程。include using namespace std template type,模板的形參,用於確定函式的形...