在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++ STL中常见的typename关键字的作用相关推荐

  1. 比较两组数据的差异用什么图更直观_芯片数据分析中常见的一些图的作用

    今天给大家讲讲芯片数据分析中常见的一些图的作用,让大家伙儿知道它们在BB些啥. 箱式图(Box plot) 基因芯片的原始数据是需要进行标准化处理的,主要目的是消除由于实验技术(如荧光标记效率.扫描参 ...

  2. Java中final、static关键字的作用

    final关键字可用于三个地方: 用于修饰类.类属性和类方法. 被final修饰的类不能被继承,被final修饰的类属性和类方法不能被覆盖(重写): 一.final 1. final修饰变量: fin ...

  3. c语言子函数作用是什么意思,C语言编译器中常见的函数用法以及作用详解

    C语言的编译器中自带很多库函数,如果熟悉了,用起来操作起来都很方便,不仅能提高效率稳定性也是毋庸置疑的,毕竟都是世界级的大师写出来的.今天就来谈一谈,C语言自带的函数内存操作处理这一块 主要有:mem ...

  4. 计算机常见接口有哪些,笔记本电脑中常见的接口有哪些?有什么作用?

    我曾经也为笔记本电脑四周遍布的各种接口迷茫过,日积月累很多接口已渐渐了解了其用途,那么笔记本电脑中常见的接口有哪些?有什么作用?下面就为大家介绍一下,来看看吧. 接口介绍 1.USB是现在非常常用的接 ...

  5. C++中typename关键字的使用方法和注意事项

    目录 起因 typename的常见用法 typename的来源 一些关键概念 限定名和非限定名 依赖名和非依赖名 类作用域 引入typename的真实原因 一个例子 问题浮现 千呼万唤始出来 不同编译 ...

  6. 什么是java的关键字_java中常见的关键字

    什么是关键字呢? 概述:关键字就是在java语言中赋予特殊含义的单词 特点:1.组成的关键字的单词全是小写 2.常见的代码编辑器中,对关键字都有特殊的颜色标记 比如在idea中对关键字都有特殊的颜色标 ...

  7. Python中常见的关键字

    Python中常见的关键字 什么是关键字 简单的我们可以把关键字看作古代朝廷的官衔,每一个当官的人可能不一样,但每一个官衔都对应着不同的职位,不同的职责. Python内部自带的用于处理业务逻辑的特殊 ...

  8. 深入解析C++ STL中的常用容器

    转载:http://blog.csdn.net/u013443618/article/details/49964299 这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的 ...

  9. 面试中常见的50个面试题目及答案

    1.extern的作用 自己理解:应该需要区分extern在C语言中和C++语言中的作用,C语言中extern声明的函数和变量可以被该文件外部模块引用,C++语言中除了该作用还可以声明extern & ...

最新文章

  1. 想学Python?那这套教程再适合你不过了!!
  2. AIoT的生死局:未来的AIoT很赚钱,但目前的AI+IoT很花钱
  3. 软件构造学习笔记-第二周
  4. java integer最大值_五分钟学会java中的基础类型封装类
  5. MySQL启动、连接,退出,关闭命令学习
  6. 【干货】TCP/IP协议三次握手四次挥手
  7. 《语音识别技术》.ppt
  8. 在windows 2003系统上安装诺基亚pc套件以及笔记本通过PC套件上网
  9. 软件测试周刊(第26期):从喜欢里得到力量和快乐
  10. 安卓按键命令库教程(紫猫版)
  11. MD5算法如何被破解
  12. Android上传图片的方式
  13. echarts自定义legend图例和tooltip默认提示文字
  14. Uniapp子组件不显示
  15. Interpreter(解释器)
  16. licenses.licx文件
  17. 如何快速连接别人共享的打印机?
  18. win10的wsapp把电脑卡死
  19. 懂得三境界-使用dubbo时请求超过问题
  20. 《微SaaS创富周刊》第5期:基于A/B测试的20+创富项目盘点

热门文章

  1. Android学习笔记(二三): 多页显示-Flipper的使用
  2. 小块头大性能才能得到用户的青睐
  3. 演练:开发和使用自定义服务器控件
  4. 【原创视频教程】学生信息管理系统6--学员信息管理(完结篇)
  5. iOS 进阶之底层原理一OC对象原理alloc做了什么
  6. __clone class php_PHP 对象克隆 clone 关键字与 __clone() 方法
  7. vba移动文件_Excel VBA 之 按需求移动、复制文件
  8. ​Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机
  9. Nessus漏洞扫描教程之使用Nmap工具扫描识别指纹
  10. Kali Linux 安全渗透教程第七更 大学霸1.4.3安装至VMware Workstation