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是一个类型还是一个成员名称(静态数据成员或者静态函数),所以编译不能够通过。

相关文章

  • 利用Matlab复刻羊了个羊小游戏

    利用Matlab复刻羊了个羊小游戏

    最近羊了个羊游戏可谓是异常火爆,身边几乎都在玩,他其实就是一个简单的卡通背景消除闯关游戏,本文将用Matlab复刻这一游戏,感兴趣的可以了解一下
    2022-09-09
  • wince程序防止创建多个实例实现互斥作用

    wince程序防止创建多个实例实现互斥作用

    什么时候用的互斥?当你的程序只允许同时打开一个的时候,就可以通过互斥来实现,下面说的互斥,主要是针对防止程序创建多个实例这种情况来实现的
    2014-02-02
  • C语言之初识指针

    C语言之初识指针

    在C语言中,指针是一种保存变量地址的变量。这篇文章介绍了初识C语言指针,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • C++ API功能设计的实现

    C++ API功能设计的实现

    C++ API中看似很小的修改,都可能会影响到生成的对象和库文件的二进制表示,如果客户想替换共享库使之工作,就不能简单的替换库文件了事,而往往需要重新编译
    2022-08-08
  • C++中的异常实例详解

    C++中的异常实例详解

    异常处理是C++的一项语言机制,用于在程序中处理异常事件,下面这篇文章主要给大家介绍了关于C++中异常的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • VC++实现程序开机启动运行的方法

    VC++实现程序开机启动运行的方法

    这篇文章主要介绍了VC++实现程序开机启动运行的方法,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • C++中浅拷贝与深拷贝的详解及其作用介绍

    C++中浅拷贝与深拷贝的详解及其作用介绍

    这篇文章主要介绍了C++中浅拷贝与深拷贝的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • MySQL系列教程之使用C语言来连接数据库

    MySQL系列教程之使用C语言来连接数据库

    c语言操作Mysql数据库,主要就是为了实现对数据库的增、删、改、查等操作,下面这篇文章主要给大家介绍了关于MySQL系列教程之使用C语言来连接数据库的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • C语言时间处理实例分享

    C语言时间处理实例分享

    这篇文章主要介绍了C语言时间处理实例分享的相关资料,需要的朋友可以参考下
    2015-07-07
  • C语言实现wave波形

    C语言实现wave波形

    本文详细讲解了C语言实现wave波形的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-12-12

最新评论