Skip to content

Instantly share code, notes, and snippets.

@wen-long
Last active August 29, 2015 14:03
Show Gist options
  • Save wen-long/34fe90d232b694b4c9f8 to your computer and use it in GitHub Desktop.
Save wen-long/34fe90d232b694b4c9f8 to your computer and use it in GitHub Desktop.

###C++ Primer第5版 学习笔记

####第二章

  1. 字符类型除了char以外.wchar_t,char16_t,char32_t
    1. wchar_t类型用于确保可以存放机器最大拓展字符集中的任意一个字符
    2. char16_t和char32_t用于Unicode
  2. 字符型有char,signed char,unsignedchar三种,char的表现由编译器决定,因此不在算术运算中使用char,应标明signed或unsigned
  3. 浮点数用double
  4. 算数表达式既有无符号也有int时,int会被转换为无符号数
  5. 无符号数减去任意数时,结果一定不为负数,可以理解为结果取模
  6. 转义\777(八进制数字)只有三个数字,\x用到后面所有数字
  7. -1u==429496729
  8. nullptr是指针字面值
  9. 初始化四种方式
    1. int a = 0;
    2. int b = {0};//类型必须无损转换
    3. int c{0};
    4. int d(0);//不能用在类初始化中
  10. 引用本身不是对象,所以没有引用的引用
  11. 变量的定义包括一个基本数据类型和一组声明符

int i = 1024, *p = &i, &r = i; i是int,p是int指针,r是int引用,基本数据类型都是int,各自的声明符不同

  1. 默认状态下,const对象只在文件内有效
  2. const变量要文件间共享,声明和定义都加extern,这样只需定义一次就可以了
  3. C++不允许随意改动引用所绑定的对象,可以理解为所有的引用都是常量
  4. 常量引用(对const的引用)可以绑定常量对象,非常量对象,字面值,表达式(此时绑定的实际是临时量对象)
  5. 变量声明为constexpr由编译器验证是否为常量表达式
  6. constexpr声明的指针是顶层const
  7. 别名的两个方法
    1. typedef double wages;
    2. using number=int;
  8. auto一般忽略顶层const,保留底层const
  9. 设置auto引用时,初始值的顶层const会被保留,但不能auto &a = 42
  10. decltype使用变量,则为变量的类型,包含顶层const和引用
  11. decltype使用的表达式不是变量,若表达式结果为左值,则为引用类型
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment