基础之再回顾
- 变量(对象)的初始化与赋值是不同的,到后面会看到对象进行这些操作时调用的函数不同,有一种说法是初始化速度快一点。
- 引用并非对象,只是对象的一个别名,但是指针是对象
int a = 5 int &b = a &a 和 &b 是一样的 - Primer中P50有一句话:一个指针指向某对象,同时另一个指针指向另外对象的下一个地址,此时两个指针也有肯能相等,自己再加一句,二者指针值相等,但是所指向的变量类型可能不同。
-
int b = 1 const int & a = b double b = 140.2 const int & a = b 以上均为合法 const int * a int * const a 注意上面的区别 - 常量和常量表达式(constexpr)的区别:常量表达式仅仅在编译过程就能得到其值P67
- decltype:去探测一个函数或者标识符的(返回)类型;对数组首部指针的探测,它能够探测出数组而不是指针
- sizeof :对数组执行,会得到整个数组所占空间的大小;对vector或string执行,则得到该类型固定部分的大小;sizeof 返回的是一个常量表达式
- 类型转换
- 隐式转换:算术转换(整型提升),赋值转换,数组转指针,非常量转常量
- 显示转换:cast-name<type>(expression),static_cast、dynamic_cast、const_cast、reinterpret_cast
- static_cast:一种强制转换,要求底层不是const,一般用于高精度转低精度,空指针转类别指针
- const_cast:只能改变运算对象的底层const,只改变常量属性
- reinterpret_cast:为运算对象的位模式提供较低层次上的重新解释,如char*转换为int*
- dynamic_cast:后面类的虚函数那会介绍,实现类的多态性

浙公网安备 33010602011771号