C++模板的定製五:對定製成員函式的補充 (轉)
C++模板的定製五:對定製成員的補充:namespace prefix = o ns = "urn:schemas--com::office" />
作者:袁小凱
華南理工大學研究所北區研發二部
E –
前言
在” C++模板的定製四:定製成員函式和預設類參 “一文中我簡單介紹了模板類中成員函式的定製(全特化),但是有一細節還是說清楚的好,以免大家誤解。在C++中不能區域性定製模板類中的成員函式。再說一下模板類中的模板成員函式的用法。希望對大家有幫助。
一、 定製模板類中的成員函式
在” C++模板的定製四:定製成員函式和預設類參 “中說了可以定製模板類中的成員函式。這時你會不會認為下例也應該可以。
template
class classname
{
public:
classname(T t):_val(t){}
~classname(){}
void display(P p);
private:
T _val;
};
定製模板類中的成員函式void display(P p):
template
void classname
{
if(NULL==_val)
cout<
else
cout<<_val>
……
}
很對不起!這樣是不行的,我真的希望能行,我開始時認為如果可以這樣寫多好。但事實上的確不可以。我也不知道為什麼,但我很想知道,如果那位大俠能告知,在下萬分感謝!記住吧,不要再犯我同樣的錯誤。^_^
二、 模板類中的模板成員函式
當我們得到了模板類的好處後,還希望能使用模板成員函式,下面就簡單的做一下介紹。假設有個模板類中需要一個加法函式可以處理任何型別。
template
class classname
{
template
I1 add (I1 i1,I2 i2)
{
return ….;
}
};
上例中add成員函式就是個模板類中的模板成員函式。但當你不內聯時該如何寫呢?如果你在VC上試的話,你會永遠都得不到正確的結果,因為它不支援。正確的寫法如下:
template
template
I1 classname
{
……
}
這是C++標準的寫法,請不要說有沒有必要,你知道總比不知道的好,不是嗎?好了,不說了,希望能對你有所幫助。文章寫的倉促,有錯別字或錯誤請大家多批評指出。歡迎和大家交流。
2001-11-24
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990426/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++模板的定製一:定製函式模板 (轉)C++函式
- C++模板的定製四:定製成員函式和預設類參 (轉)C++函式
- C++模板的定製二:定製C++類 (轉)C++
- C++模板的定製三:部分定製C++類 (轉)C++
- c++中模板類的成員函式的宣告與定義應該放在標頭檔案裡C++函式
- C++:類的成員函式C++函式
- C++的函式和模板函式 (轉)C++函式
- C++型別轉換時定義非成員函式(轉)C++型別函式
- 定製雲函式天氣推送函式
- 利用TRUNC函式定製JOB的時間間隔函式
- 消除複製建構函式和“模板式複製建構函式”中的冗餘程式碼 (轉)函式
- C++ 類成員函式C++函式
- 遊戲設計製作中對鎖定設定的應用(轉)遊戲設計
- 模板類成員函式的定義和宣告為什麼要放在一個檔案中函式
- c++ const 成員函式C++函式
- 第五章:常用的高階函式和函式的補充語法函式
- 函式指標使用c++類成員函式函式指標C++
- MySQL壓力測試中定製sysbench的Lua模板MySql
- 用C++模板描述的連結串列、棧、佇列(補充) (轉)C++佇列
- 用C++ Builder來定製系統選單(轉)C++UI
- c++智慧指標中的reset成員函式C++指標函式
- C++複製建構函式C++函式
- 定製精彩的命令提示行(轉)
- 使用 Dockerfile 定製映象【轉】Docker
- 成員函式的說明和使用(轉)函式
- 類别範本及其成員函式的定義及注意事項函式
- 深入C++成員函式及虛擬函式表C++函式
- [C++] 成員函式指標和函式指標C++函式指標
- C++再議建構函式及複製建構函式深度複製C++函式
- 用Dreamweaver 定義模板批次製作網頁網頁
- c++中string類成員函式的總結C++函式
- c++函式模板C++函式
- 定製一個BitmapButton類 (轉)
- 個性定製Linux(轉)Linux
- app定製的價格APP
- 第五章 Vlookup函式示例-細節決定成敗函式
- 定製Tinycore
- 組合(巢狀)的 補充,主動呼叫其他成員 以及特殊成員巢狀