数据类型的别名
背景
旧语法里,用typedef进行类型别名的定义;c++17新语法中会用using关键字来定义别名。这里进行一个对比记录。
using关键字(新语法)
using关键字允许把自己的数据类型名称指定为另一个类型的替代名称。
如下,
1 | //把类型名称BigOnes声明为标准类型unsigned long long的等价名称 |
typedef关键字(旧语法)
给类型定义别名的一种旧式语法,使用typedef关键字。
如下,
1 | //可以如下定义类型别名BigOnes |
新旧语法对比
新语法有很多优点
(1)使用using新语法更直观,看起来就像是普通的赋值语句的。
使用原本的typedef语法时,总要颠倒现有类型与新名称的顺序。
(2)只有当为更高级的类型指定别名时,使用using语法相比使用typedef语法的其他优势才会展现出来。
例如,使用using时,更容易为函数类型指定别名。
另外,using关键字允许指定所谓的类型别名模板或参数化类型别名,这是使用原来的typedef语法所不能实现的。
遵循原则
1 | 总是使用using关键字来定义类型别名。 |
类型别名的用途
(1)别名的一个重要用途是简化涉及复杂类型名的代码。
(2)类型别名的另一个用途是为可能需要在多台计算机上运行的程序所使用的数据类型提供灵活性。
在代码中定义并使用类型别名时,只要修改类型别名的定义,就可以改变实际的类型。
注意:
应该有节制的使用类型别名。
类型别名确实可以使代码更加简洁,但是简洁的代码并不是编程的目标。
很多时候,拼写出具体的类型能够让代码更加容易理解。