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产生好久后才出现这个关键字。

相关文章
相关标签/搜索