c++中typename和class的区别介绍

 更新时间:2013年03月04日 08:48:09   作者:  
在c++Template中,很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?

相信学习C++的人对class这个关键字都非常明白,class用于定义类。在模板引入c++后,最初定义模板的方法为: template<class T>......

在这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字。它的作用同
class一样表明后面的符号为一个类型,这样在定义模板的时候就可以使用下面的方式了: template<typename T>......

在模板定义语法中关键字class与typename的作用完全一样。

typename难道仅仅在模板定义中起作用吗?其实不是这样,typename另外一个作用为:使用嵌套依赖类型(nested depended name),如下所示:

复制代码 代码如下:

class MyArray
{
public:
    typedef int LengthType;
    .....
}

template<class T>
void MyMethod( T myarr )
{
    typedef typename T::LengthType LengthType;
    LengthType length = myarr.GetLength;
}


这个时候typename的作用就是告诉c++编译器,typename后面的字符串为一个类型名称,而不是成员函数或者成员变量,这个时候如果前面没有typename,编译器没有任何办法知道T::LengthType是一个类型还是一个成员名称(静态数据成员或者静态函数),所以编译不能够通过。

相关文章

  • C语言中的运算符和结合性问题

    C语言中的运算符和结合性问题

    这篇文章主要介绍了C语言中的运算符和结合性问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • C++实现从数组中同时取出最大最小元素算法示例

    C++实现从数组中同时取出最大最小元素算法示例

    这篇文章主要介绍了C++实现从数组中同时取出最大最小元素算法,结合具体实例形式分析了C++通过数组的遍历、排序获取最大与最小元素的相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • C++中输出十六进制形式的字符串

    C++中输出十六进制形式的字符串

    这篇文章主要给大家介绍了C++中输出十六进制形式的字符串,文中给出了详细的介绍,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • 详解C++ Qt中堆叠窗体的使用案例

    详解C++ Qt中堆叠窗体的使用案例

    这篇文章主要为大家详细介绍了C++ Qt中堆叠窗体的使用案例,文中的示例代码讲解详细,对我们学习QT有一定的帮助,感兴趣的小伙伴可以了解一下
    2023-08-08
  • C++内存泄漏及检测工具详解

    C++内存泄漏及检测工具详解

    最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck,功能非常强大,相信做C++开发的人都离不开它。此外就是不使用任何工具,而是自己来实现对内存泄露的监控
    2013-10-10
  • 简单了解C++常见编程问题解决方案

    简单了解C++常见编程问题解决方案

    这篇文章主要介绍了C++常见编程问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 详解如何配置CLion作为Qt5开发环境的方法

    详解如何配置CLion作为Qt5开发环境的方法

    这篇文章主要介绍了详解如何配置CLion作为Qt5开发环境的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 双缓冲解决VC++绘图时屏幕闪烁

    双缓冲解决VC++绘图时屏幕闪烁

    相信很多人在做图形界面开发时,常常会遇到屏幕闪烁的情况,当然我也不例外,下面我们就来详细探讨下这个问题的解决办法
    2015-08-08
  • c++项目构成从cmake使用基础详解

    c++项目构成从cmake使用基础详解

    这篇文章主要为大家介绍了c++项目构成,从cmake使用基础开始为大家讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 关于C++STL string类的介绍及模拟实现

    关于C++STL string类的介绍及模拟实现

    这篇文章主要介绍了关于C++STL string类的介绍及模拟实现的相关资料,需要的朋友可以参考下面具体的文章内容
    2021-09-09

最新评论