随笔 - 21, 文章 - 2, 评论 - 2, 阅读 - 7637

类型别名

Posted on   抑或  阅读(224)  评论(0编辑  收藏  举报

类型别名(type alias)是一个名字,它是某种类型的同义词。使用类型别名有很多好处,它让复杂的类型名字变得简单明了、易于理解和使用,还有助于程序员清楚的知道使用该类型的真实目的。

有两种方法可用于定义类型名。传统方法是使用关键字typedef:

 

 其中关键字typedef 作为声明语句中的基本数据类型的一部分出现。含有typedef 的声明语句定义的不再是变量而是类型别名。和以前的声明语句类型一样,这里的声明符也可以包含类型修饰,从而也能由基本数据类型构造出复合类型来。

新标准规定了一种新的方法,使用别名声明来定义类型的别名:

using SI =Sales_item;//SI是Sales_item的同义词

这种方法用关键字using作为别名声明的开始,其后紧跟别名和等号,其作用是把等号左侧的名字规定成等号右侧类型的别名。

类型别名和类型的名字等价,只要是类型的名字能出现的地方,就能使用类型别名。

指针、常量和类型别名

如果某个类型别名指代的是复合类型或常量,那么把它用到声明语句里就会产生意想不到的后果。例如下面的声明语句用到了类型pstring,它实际上是类型char*的别名:

 

 上述两条声明语句的基本数据类型都是const pstring,和过去一样,const 是对给定类型的修饰。pstring 实际上是指向char 的指针,因此,const pstring 就是指向char 的常量指针,而非指向常量字符的指针。

遇到一条使用了类型别名的声明语句时,人们常常会错误地尝试把类型别名替换成他本来的样子,以理解该语句的含义:

 

 这种理解是错误的,声明符中用到pstring时,其数据类型是指针,可是用char*重写了声明语句后,数据类型就变成了char ,*成为了声明符的一部分。 前者声明了一个指向char的常量指针,改写后的形式则声明了一个指向const char 的指针。

1
点击右上角即可分享
微信分享提示