使用using与typedef来定义别名

在C++中,using与typedef这两个关键词是大家用的比较多的,using关键词用的最多的是using namespace的搭配如using namespace std;而typedef用来设为某个类型设置一个别名,如typedef unsigned long long uint64;不过,可能有些不知道,其实using也可以用来设置别名,在这种情况下,它与typedef所表述的意思没有区别。使用using来设置一个别名方法如下:

using uint64 = unsigned long long;

C++标准上描述为:

A typedef-name can also be introduced by analias-declaration. The identifier following the using keyword becomes atypedef-name and the optional attribute-specifier-seq following the identifierappertains to that typedef-name. It has the same semantics as if it wereintroduced by the typedef specifier. In particular, it does not define a newtype and it shall not appear in the type-id

因此在普通的类型名定义时,理论上讲二者是没有区别的,当然,我们知道,还有一种方式定义类型别名,效果也是一样的,那就是#define。

using与typedef在C++11标准以后对于模板类型别名声明有了一点区别。考虑到如下写法:

template <typename T>
typedef std::vector<T> v;//使用typedeftemplate <typename T>
using v = std::vector<T>;//使用using

看起来好像是都可以的写法,但是使用typedef时,编译器会报错error: template declaration of ‘typedef’

也就是说,C++编译器不支持使用typedef关键词为模板类设置别名,但是使用using的方式声明一个关键词却是允许的,只是这个是C++11标准才有的,如果在编译时不加上--std=c++11使用新的标准的话,编译器一样会报错。

使用using与typedef来定义别名相关推荐

  1. C++使用using与typedef定义别名

    1.为C++模版设置别名 //typedef定义别名 template <typename T> typedef std::vector<T> v;//error//using ...

  2. 摘录的一些Bjarne Stroustrup关于C++的谈话内容

    1 专访 Bjarne Stroustrup 2 C++ 热点问题一席谈 3 C++0x 热点问题访谈 4 C++0x 概览 专访 Bjarne Stroustrup 来源:荣耀 马皓明 译 作者:B ...

  3. C++中typedef和类型别名

    在日常的开发编码中,偶尔会遇到一些看似简单的一些知识点,在一般的使用过程中并不觉得有什么问题,但是一旦出现在某些相对复杂的场景下,就会发现自己仍然存在使用上的一些盲区.有点类似于我们背单词的情况,一般 ...

  4. 【C 语言】数据类型本质 ( 数据类型别名 | typedef 关键字 | 为复杂数据类型设置别名 | 为简单数据类型设置别名 )

    文章目录 一.typedef 关键字 1.为复杂数据类型设置别名 2.为简单数据类型设置别名 二.代码示例 一.typedef 关键字 1.为复杂数据类型设置别名 使用 typedef 关键字为 复杂 ...

  5. Typedef用法(转载)

    在C的学习过程中,现在才发现,以前有那么多被忽略的重点:现在是慢慢拾起这些重点的时候,通过百度和博客,我感觉我学到了很多东西,自己只是在别人说的基础上,按照自己学习的过程在这里记录一下,以后有时间回过 ...

  6. C++中typedef和define的区别

    typedef和#define的用法与区别 一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: ...

  7. typedef的四个用途和两大陷阱

    typedef的四个用途和两个陷阱 --------------------------------- 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: c ...

  8. Typedef用法学习

    不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些 ...

  9. typedef的作用

    typedef的作用 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量 ...

最新文章

  1. 多行文本框限制输入字符长度(两种方法)
  2. implementation ‘com.zxy.android:recovery:
  3. tensorflow处理简单线性回归
  4. 进程、线程和协程之间的区别和联系
  5. Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) dfs + 思维
  6. Linux平台上SQLite数据库教程(二)——C语言API介绍
  7. day5 JavaEE实战班
  8. pthread_create()函数
  9. 通过hsv筛选颜色 python_OpenCV-Python 光流介绍(附代码)
  10. Unit 11 电话转接
  11. c语言n天前是星期几,新手做的日历表及查找日期是星期几
  12. 汇编大作业(课程设计):简易英英词典
  13. 将ClearCase的客户端编码设置为UTF-8
  14. 青花瓷 下载App Store上历史版本的App的ipa的包
  15. VMware安装苹果虚拟机-亲测有效
  16. 2018-03-28-日剂
  17. 阿里大手子评:入门到大成!GitHub新上线并发编程深度解析实战PDF
  18. vue使用lodop.js实现前端标签打印
  19. 自控原理学习笔记-反馈控制系统的动态模型(1)
  20. 如何简单又快速的清理C盘内存

热门文章

  1. HTML data属性简介以及低版本浏览器兼容算法
  2. JavaScript原生对象属性和方法详解——String对象
  3. Documentum常见问题4—如何通过vlink方式直接查看文档内容
  4. 关于 MSDN 收藏夹
  5. 关于《用C#编写ActiveX控件》的几点说明
  6. 命令获取计算机信息,教你怎么在windows上用命令查看系统信息
  7. [笔试题目] 腾讯2015年9月基础研究笔试题
  8. 【数据结构与算法】之深入解析“寻找旋转排序数组中的最小值II”的求解思路与算法示例
  9. Python之30秒就能学会的漂亮短程序代码
  10. OpenGL之利用矩阵的“平移”“旋转”“综合变换”等实现矩形的移动