基础之再回顾

  1. 变量(对象)的初始化与赋值是不同的,到后面会看到对象进行这些操作时调用的函数不同,有一种说法是初始化速度快一点。
  2. 引用并非对象,只是对象的一个别名,但是指针是对象
    int a = 5
    int &b = a
    &a 和 &b 是一样的
  3. Primer中P50有一句话:一个指针指向某对象,同时另一个指针指向另外对象的下一个地址,此时两个指针也有肯能相等,自己再加一句,二者指针值相等,但是所指向的变量类型可能不同
  4. int b = 1
    const int & a = b
    
    double b = 140.2
    const int & a = b
    
    以上均为合法
    
    
    const int * a
    
    int * const a
    
    注意上面的区别

     

  5. 常量和常量表达式(constexpr)的区别:常量表达式仅仅在编译过程就能得到其值P67
  6. decltype:去探测一个函数或者标识符的(返回)类型;对数组首部指针的探测,它能够探测出数组而不是指针
  7. sizeof :对数组执行,会得到整个数组所占空间的大小;对vector或string执行,则得到该类型固定部分的大小;sizeof 返回的是一个常量表达式
  8. 类型转换
    1. 隐式转换:算术转换(整型提升),赋值转换,数组转指针,非常量转常量
    2. 显示转换:cast-name<type>(expression),static_cast、dynamic_cast、const_cast、reinterpret_cast  
      1. static_cast:一种强制转换,要求底层不是const,一般用于高精度转低精度,空指针转类别指针
      2. const_cast:只能改变运算对象的底层const,只改变常量属性
      3. reinterpret_cast:为运算对象的位模式提供较低层次上的重新解释,如char*转换为int*
      4. dynamic_cast:后面类的虚函数那会介绍,实现类的多态性
posted @ 2018-03-22 11:52  JerrfyChan  阅读(97)  评论(0)    收藏  举报