第二单元总结笔记
1.引用
引用为对象起了另外一个名字,引用类型引用另外一种类型。引用并非对象,他只是已存在对象的另外一个名字。引用定义时必须赋予初始值,绑定与一个具体对象。
2.指针
指针时指向另外一种类型的复合类型。与引用相似指针实现了对其他对象的间接访问。指针与引用也有很多区别。其一,指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生周期内可以指向几个不同的对象。其二,指针无需再定义时赋值。如果没初始化,指针将有个不确定的值。(指针如果没有初始化,不能够使用。)
3.利用const声明常量,如果想多个文件共用const对象,应该在前面加extern关键字。c++11新标准规定,允许将变量声明为constexpr类型以便编译器来验证变量的值是否是一个常量表达式。在constexpr声明中如果定义一个指针,限定符仅对指针有效。例如:const int *p = nullptr; //p是一个指向整形常量的指针。constexpr int *q = nullptr;//q是一个指向整数的常量指针。
4.类型别名
(1)传统方法用typedef 例如:typedef double wages;//wages是double的同义词。typedef wages base,*p;//base是double的同义词,p是double* 的同义词。 (2)c++11新标准规定了一种新方法用using例如:using SI = Sale_item;//SI就是Sale_item的同义词。
5.auto类型说明符
auto类型说明符,是让编译器替我们分析表达式所属的类型,和其他特定的类型说明符不同,auto是编译器通过初始值来推算变量的类型。因此auto定义的变量不许有初始值。(auto一般会忽略顶层的const,保留底层的const。如需声明const必须显式的定义)。
6.decltype类型提示符
decltype的作用是选择并返回操作数的数据类型,编译器只分析表达式并得到它的类型,不计算表达式的值。如果decltype使用的表达式不是一个变量,则返回表达式结果的类型。
7.auto和decltype的区别
auto通过变量初始值判断类型,而decltype是通过表达式分析表达式的类型。decltype的结果类型与表达式形式密相关,凡是变量名加上括号的得到的类型一定是引用。