###C++ Primer第5版 学习笔记
####第二章
- 字符类型除了char以外.wchar_t,char16_t,char32_t
- wchar_t类型用于确保可以存放机器最大拓展字符集中的任意一个字符
- char16_t和char32_t用于Unicode
- 字符型有char,signed char,unsignedchar三种,char的表现由编译器决定,因此不在算术运算中使用char,应标明signed或unsigned
- 浮点数用double
- 算数表达式既有无符号也有int时,int会被转换为无符号数
- 无符号数减去任意数时,结果一定不为负数,可以理解为结果取模
- 转义\777(八进制数字)只有三个数字,\x用到后面所有数字
- -1u==429496729
- nullptr是指针字面值
- 初始化四种方式
- int a = 0;
- int b = {0};//类型必须无损转换
- int c{0};
- int d(0);//不能用在类初始化中
- 引用本身不是对象,所以没有引用的引用
- 变量的定义包括一个基本数据类型和一组声明符
int i = 1024, *p = &i, &r = i; i是int,p是int指针,r是int引用,基本数据类型都是int,各自的声明符不同
- 默认状态下,const对象只在文件内有效
- const变量要文件间共享,声明和定义都加extern,这样只需定义一次就可以了
- C++不允许随意改动引用所绑定的对象,可以理解为所有的引用都是常量
- 常量引用(对const的引用)可以绑定常量对象,非常量对象,字面值,表达式(此时绑定的实际是临时量对象)
- 变量声明为constexpr由编译器验证是否为常量表达式
- constexpr声明的指针是顶层const
- 别名的两个方法
- typedef double wages;
- using number=int;
- auto一般忽略顶层const,保留底层const
- 设置auto引用时,初始值的顶层const会被保留,但不能
auto &a = 42
- decltype使用变量,则为变量的类型,包含顶层const和引用
- decltype使用的表达式不是变量,若表达式结果为左值,则为引用类型