有关const的一些事
1.const对象必须初始化,因为const对象一旦创建,其值不能再被改变。
2.const对象是常量,因此可以赋予其字面值。
3.普通变量默认支持多文件下共享,而const默认不支持,需要在定义和声明是都加上关键字extern才能在多个文件中使用。
4.所谓“常量引用”指的是“对const的引用”,而非该引用本身是常量,因为引用不算对象。
5.常量引用初始化可以使用任意表达式作为初始值,只要表达式的结果可以转换成引用的类型即可。
6.对const的引用可以绑定非常量,但无法改变非常量的值。
7.const <type> *ptr 是指向常量的指针,无法修改指向对象的值,属于底层const;<type> *const ptr 是常量指针,意思是指针本身是常量,一旦初始化完成,其保存的地址将不允许被改变,属于顶层const。
8.常量表达式指的是在编译过程中就能得到结果的表达式,可以用“constexpr+常量表达式”的形式来声明一个常量;constexpr定义的指针属于顶层const。
类型别名的两种办法
1.typedef double w;
2.using dou = double;
关于auto
1.auto可以根据表达式推断变量类型,使用auto声明多个变量需要保证其都从属于相同的基本数据类型。
2.auto会自动忽略顶层const,保留底层const,可以通过在auto前加上const来保留顶层const。
关于declitype
暂时没完全搞明白,先不写了
关于头文件保护符
#ifdef 当且仅当变量已定义时为真,#ifndef 当且仅当变量未定义时为真,一旦其为真就会执行后续操作,直到遇到#endif,此方法可以防止由于引入自定义头文件而导致的重复引用。