回覆列表
  • 1 # 使用者5464423892263

    實際上可以說沒有區別。

    按 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 則語法錯誤。

    以下這篇文章介紹得比較詳細:

    http://blogs.msdn.com/b/slippman/archive/2004/08/11/212768.aspx

  • 中秋節和大豐收的關聯?
  • 有沒有好的老人機推薦啊?就是那種待機時間長,訊號好,音量大的那種?