聲明模板的方式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 則語法錯誤。對象