[Reprint]c++中typename和class的区别介绍
在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的区别介绍相关推荐
- c++中typename和class的区别介绍
"typename"是一个C++程序设计语言中的关键字.相当用于泛型编程时是另一术语"class"的同义词.这个关键字用于指出模板声明(或定义)中的非独立名称( ...
- mysql ifnull 别名_mysql中IFNULL,IF,CASE的区别介绍
mysql中IFNULL,IF,CASE的区别介绍 发布时间:2018-04-15 09:54:57 假设有一数据表的状态字段设计为varchar类型,有以下值:NULL,pending,pendin ...
- [Perl]Perl中chomp和chop的区别介绍
Perl中chomp和chop的区别介绍 一.chomp是用来删除换行符. #!/usr/bin/perl $c = "abcde\n"; chomp($c); print(&qu ...
- 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 ...
- oracle nvarchar2使用场景,Oralce中VARCHAR2()与NVARCHAR2()的区别介绍
一.先来看看Oralce中VARCHAR2()和NVARCHAR2()的官方定义 官方文档定义如下: VARCHAR2(size [BYTE | CHAR]) Variable-length char ...
- Jquery中attr与prop的区别
prop()函数的结果: 1.如果有相应的属性,返回指定属性值. 2.如果没有相应的属性,返回值是空字符串. attr()函数的结果: 1.如果有相应的属性,返回指定属性值. 2.如果没有相应的属性, ...
- sql 问号的使用 php_PHP中bindParam和bindValue的区别
点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网 源 / www.php.cn PHP中bindParam和bindValue的区别 (查看原文请点击本文末尾左下角: PD ...
- C++模板中关键字typename与class的区别
C++模板中关键字typename与class的区别 一.共同点 在定义类模板或者函数模板时,typename 和 class 关键字都可以用于指定模板参数中的类型. template <typ ...
- C与C++中++i和i++的区别
C与C++中++i和i++的区别 文章目录 C与C++中++i和i++的区别 前言 一.C++中区别 二.C中区别 前言 i++和++i很明显的区别就是:++i是先对i进行加一操作然后再返回i的值,而 ...
最新文章
- 【BZOJ4407】于神之怒加强版
- python画图怎么调色_Python气象数据处理与绘图(19):如何使用NCL色板(调色盘思路相同)...
- solr mysql 自动同步_MongoDB和Solr的整合以及实现数据同步功能
- 表达式求值(NOIP2013 普及组第二题)
- 控制台没有消息循环_【干货】思科设备报错消息汇总大全~
- 用什么软件测试钢结构受力,钢结构平台承载力检测
- Android socketnetty实现
- 技巧:Eclipse阿里代码规范插件
- 2020互联网行业术语
- 【渝粤题库】陕西师范大学201841 比较教育学 作业(专升本)
- oracle临时表空间占用率过高,ORACLE 临时表空间使用率过高的原因及解决方案
- 区块链3.0 EOS和TRON
- conda使用清华镜像安装pytorch
- 学习中遇到的小技巧(陆续更新……)
- Python实现电报加密(字母后移一位)
- 企业级分布式批处理方案
- FLV格式文件如何转换成MP4格式 1
- 因果推断----因果关系之梯
- Revit转点云pcd模型
- 谷歌美女副总裁:只跟聪明人在一起