从大体上看,本章主要讲了c++中变量的基本内置类型、复合类型、const限定符及处理类型。
1.基本内置类型:包括算术类型和空类型
2.复合类型:包括引用和指针(当然还有其他复合类型)
2.1引用
eg.int a=1;int &b=a;
一般在初始化变量时,初始值会被拷贝到新建的对象中,然而定义引用时,程序把引用和它的初始值绑定到一起,而不是拷贝;
引用其实就相当于一个对象的别名,操作对象的引用就相当于操作对象本身;
引用必须被初始化。
2.2指针
指针本身是一个对象;
无需在定义时为它赋初值;
3.const限定符:包括const的引用,指向常量的指针和常量指针;顶层const和底层const;constexpr和常量表达式
3.1const与引用和指针
3.1.1const的引用
const int &c=1;//这样也可以
const的引用,即把引用绑定到const对象上。对常量的引用不能被用作修改所绑定的对象。
但是,对const的引用可能引用一个非const对象:
常量引用仅对引用可参与的操作做出了限定,对引用对象本身是否为常量未做限定
eg.int i=42;const int &r=i;
3.1.2指向常量的指针
指向常量的指针和const的引用类似。只表示不能通过指针来改变所指对象的值,而该对象不一定非得是常量。但是要想存放常量对象的地址,就必须用指向常量的指针。
3.13常量指针
常量指针是指指针本身的值是个常量,即它所存放的地址是不能改变的,但并不意味不能通过指针来修改其所指向的对象,这由对象的类型决定。
3.14顶层和底层const
顶层const表示指针本身是一个常量,底层const表示指针所指向的对象是一个常量。
3.15constexpr
常量表达式是指值不会改变,并且在编译过程中就能得到计算结果的表达式
eg.constexpr int m=20;
4.处理类型:包括类型别名,auto类型说明符,decltype类型说明符
两种用于定义类型别名的方法:
typedef double wage;
using S=sales_item;
auto 类型说明符:用于通过等号右边的表达式来判断等号左边的对象的类型(编译器完成)
auto 一般会忽略顶层const,保留底层const
dcltype类型说明符:类似auto,但是只取表达式或函数返回值等的类型,而无需接受对应的值。
dcltype((x))得到的一定是引用类型