C 模板程式設計之typename用法

2021-10-01 02:37:04 字數 687 閱讀 3671

*例子來自《effective  c++(第三版)》,模板程式設計主要是編譯器在大發神威。

模板函式基礎用法

typename用法

……在展示上篇日誌結尾的遺留的問題前,先來說明模板程式設計中template宣告式中class和typename的關係。

什麼是template宣告式?就是如下的語句:

template
觀察下面的**,注意第5行和第6行的區別。

templatevoid printall(const c& container)

cout << endl;

}

加不加typename有什麼差別呢?

先來解釋幾個概念:

從屬名稱:template內出現的名稱如果相依於某個template引數,稱之為從屬名稱。

巢狀從屬名稱:巢狀從屬名稱是從屬名稱的子集,如果從屬名稱在class內呈巢狀狀,我們稱它為巢狀從屬名稱。還是有點繞口,在**示例中,如果c是乙個stl的容器類,那c::const_iterator既是從屬名稱,又是乙個巢狀從屬名稱。實際上它是巢狀從屬型別名稱。

templateclass derived:public base::nested

}

C 程式設計之函式模板

c 程式設計之函式模板 1 函式之模版出現 在調換兩個數值之間的函式寫法上,由於有int float double等不同的資料型別,如下例 void swapvalues int num1,int num2 上例只能適合於int 型別的變數,假如要呼叫double型別的兩個數調換,又要重寫上面的函式...

C 物件導向程式設計之模板

1 提高程式可重用性的兩種辦法 繼承 泛型程式設計 模板 2 模板的例項化 編譯器根據模板自動生成函式的過程稱為模板的例項化。3 函式模板的形式 template返回值型別 模板名 形參表 4 函式模板的一些特點 函式的模板中可以有不止乙個型別引數 template t2 print t1 arg1...

詳解C 的模板中typename關鍵字的用法

typename的使用場合 用處1,用在模板定義裡,標明其後的模板引數是型別引數。例如template t foo const t t,const y y templace class ctest 其實,這裡最常用的是使用關鍵字class,而且二者功能完全相同,這裡的class和定義類時的class...