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

转载于:https://www.cnblogs.com/hualiu0/p/5661915.html

[Reprint]c++中typename和class的区别介绍相关推荐

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

    "typename"是一个C++程序设计语言中的关键字.相当用于泛型编程时是另一术语"class"的同义词.这个关键字用于指出模板声明(或定义)中的非独立名称( ...

  2. mysql ifnull 别名_mysql中IFNULL,IF,CASE的区别介绍

    mysql中IFNULL,IF,CASE的区别介绍 发布时间:2018-04-15 09:54:57 假设有一数据表的状态字段设计为varchar类型,有以下值:NULL,pending,pendin ...

  3. [Perl]Perl中chomp和chop的区别介绍

    Perl中chomp和chop的区别介绍 一.chomp是用来删除换行符. #!/usr/bin/perl $c = "abcde\n"; chomp($c); print(&qu ...

  4. php中 br什么意思,HTML_html中br和br/的区别介绍,answer from stackflow: Simply br - phpStudy...

    html中br和br/的区别介绍 answer from stackflow: Simply is sufficient. The other forms are there for compatib ...

  5. oracle nvarchar2使用场景,Oralce中VARCHAR2()与NVARCHAR2()的区别介绍

    一.先来看看Oralce中VARCHAR2()和NVARCHAR2()的官方定义 官方文档定义如下: VARCHAR2(size [BYTE | CHAR]) Variable-length char ...

  6. Jquery中attr与prop的区别

    prop()函数的结果: 1.如果有相应的属性,返回指定属性值. 2.如果没有相应的属性,返回值是空字符串. attr()函数的结果: 1.如果有相应的属性,返回指定属性值. 2.如果没有相应的属性, ...

  7. sql 问号的使用 php_PHP中bindParam和bindValue的区别

    点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网      源 / www.php.cn PHP中bindParam和bindValue的区别 (查看原文请点击本文末尾左下角: PD ...

  8. C++模板中关键字typename与class的区别

    C++模板中关键字typename与class的区别 一.共同点 在定义类模板或者函数模板时,typename 和 class 关键字都可以用于指定模板参数中的类型. template <typ ...

  9. C与C++中++i和i++的区别

    C与C++中++i和i++的区别 文章目录 C与C++中++i和i++的区别 前言 一.C++中区别 二.C中区别 前言 i++和++i很明显的区别就是:++i是先对i进行加一操作然后再返回i的值,而 ...

最新文章

  1. 【BZOJ4407】于神之怒加强版
  2. python画图怎么调色_Python气象数据处理与绘图(19):如何使用NCL色板(调色盘思路相同)...
  3. solr mysql 自动同步_MongoDB和Solr的整合以及实现数据同步功能
  4. 表达式求值(NOIP2013 普及组第二题)
  5. 控制台没有消息循环_【干货】思科设备报错消息汇总大全~
  6. 用什么软件测试钢结构受力,钢结构平台承载力检测
  7. Android socketnetty实现
  8. 技巧:Eclipse阿里代码规范插件
  9. 2020互联网行业术语
  10. 【渝粤题库】陕西师范大学201841 比较教育学 作业(专升本)
  11. oracle临时表空间占用率过高,ORACLE 临时表空间使用率过高的原因及解决方案
  12. 区块链3.0 EOS和TRON
  13. conda使用清华镜像安装pytorch
  14. 学习中遇到的小技巧(陆续更新……)
  15. Python实现电报加密(字母后移一位)
  16. 企业级分布式批处理方案
  17. FLV格式文件如何转换成MP4格式 1
  18. 因果推断----因果关系之梯
  19. Revit转点云pcd模型
  20. 谷歌美女副总裁:只跟聪明人在一起

热门文章

  1. 思维导图:Mindjet MindManager 2023
  2. Android App设置成Launch
  3. 移动互联网大会现场文字版
  4. android中传感器的应用
  5. 二次函数 用matlab,这个二次函数如何在MATLAB中拟合出来?
  6. 微型计算机工作总结,2017-2018学年度微机室管理工作总结
  7. html 通过一个搜索框搜索站内某个目录下的其他html文件
  8. java poi实现Word生成表格并下载至本地
  9. 爱数之文件备份与恢复
  10. 牛客网错题集---机器学习基础篇