STL中typename的做用

STL中typename關鍵字的兩個做用 編譯器

1 在類型定義時申明某個關鍵字是類型(如int) 編譯

2 在template聲明模板中代替class 模板

一 在類型定義時申明某個關鍵字是類型 class

      例如: 變量

      template <class T> 命名

     class firstclass { co

              typedef   T firstclass_T; //在模板類firstclass中把T類型重命名爲 firstclass_T void

              .........

     };

     template<class T>

     class secondclass{

                typename T::firstclass_T val; //在secondclass中用T類中的firstclass_T類型來定義變量

                                                                     時用到關鍵字typename。其做用就是對C++編譯器  

                                                                    聲明其後的關鍵字是類型名,用於定義變量。這樣寫

                                                                      要保證類型T中必定存在firstclass_T類型。

               .........

    };

   void main()

{

           secondclass < firstclass<int> > second;

   }

   二 在template聲明模板中代替class

        template <class T> 也能夠寫成 template <typename T>。

       緣由是因爲關鍵字class和類關鍵字class相同爲了不歧義引入typename。typename在

        STL產生好久後纔出現這個關鍵字。

相關文章
相關標籤/搜索