c++ template class typename

聲明模板的方式dom

1 template<typename T>
2 template<class T>

結論:二者同樣,但使用typename更穩spa

 

沒搞懂,記錄一下,都是其餘人的解釋code

 

實際上能夠說沒有區別。

按 C++ 標準來講,template<typename T> 用於基礎數據類型,typename 指類型名,T 能夠取 char int double 等。

template<class T> 用於類,T 能夠取任何類。

可是這裏有一個問題,結構體應該用 typename 仍是 class? 結構體確定不是基礎數據類型,但也不是類。

因此實際狀況是,template<class T> 的 T 也能夠取基礎數據類型,tempate<typename T> 的 T 也能夠取類。

但有一個特例,就是當 T 是一個類,而這個類又有子類(假設名爲 innerClass) 時,應該用 template<typename>:

typename T::innerClass myInnerObject;

這裏的 typename 告訴編譯器,T::innerClass 是一個類,程序要聲明一個 T::innerClass 類的對象,而不是聲明 T 的靜態成員,而 typename 若是換成 class 則語法錯誤。
對象

相關文章
相關標籤/搜索