类型别名
类型别名是一个名字,它是某种类型的同义词。使用类型别名可以使复杂的类型名字变得简单明了、易于使用。c++有两种方法用于定义类型别名:typedef和using。
typedef
typedef double wages; //wages是double的同义词
typedef wages base,*p; //base是double的同义词,p是double*的同义词
关键字typedef作为声明语句中的基本数据类型的一部分出现,含有typedef的声明语句定义的不再是变量而是类型别名。
using
c++11规定了新的别名声明关键字using。
using wages = double; //wagess是double的同义词
using p = *double; //p是double*的同义词,即指向double的指针
声明成类型别名之后,其基本数据类型可能会发生改变,如果直接将类型别名替换成原本的样子进行理解,可能会发生错误。
using pstring = *char; //pstring表示指向字符的指针
const pstring p = nullptr; //p是一个常量指针,不能将其理解为const char*,即指向字符常量的普通指针
自动类型
auto
c++11引入了auto类型说明符,让编译器去分析表达式的初始值来推断类型,因此auto定义的变量必须具有初始值。