类型别名:相当于给某种类型起了一个别名,多用于自定义类型,他让复杂的类型名字变得简单明了,易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的.
类型别名和类型名字等价,只要是类型的名字能出现的地方,就能使用类型别名.
1 SI item; // 等价于 Sales_item item
一、两种方法:
1.传统方法:使用关键字 typedef // typedef 类型 类型别名;
2.c++11新标准:别名声明--用关键字 using 作为别名声明的开始,其后紧跟别名和等号,其作用是把等号左侧的名字规定成等号右侧类型的别名(有赋值的感觉,易于理解和记忆) // using 类型别名 = 类型;
1 using SI = Sales_item; // SI 是Sales_item 的同义词 2 typedef Sales_item SI; // SI 是Sales_item 的同义词
二、类型别名指代复合类型
typedef char * pstring;
const pstring cstr = 0;
上面用类型别名pstring指代char *,即pstring是指向char的指针,故const修饰的是指针,也即cstr是指向char的常量指针。// char* //指向 char 的指针
若我们尝试把类型别名替换成它本来的样子,以理解语句的含义,则有:const char * cstr;,这样我们错误地认为const修饰的是char。
所以这种理解是错误的。声明语句中用到pstring时,其基本数据类型是指针,而用char *重写后,数据类型就变成了char,*成为了声明符的一部分。即改写后的结果是,const char成了基本数据类型,声明了一个指向const char的指针,而正确的结果是声明了一个指向char的常量指针。