C++ Primer:第2章总结

C++ Primer:第2章总结

第2章 变量和基本类型

2.1 基本内置类型

基本内容:

  1. 算术类型包含字符,整型数,布尔值和浮点数,空类型不对应具体值,仅用于无返回值时函数的返回类型等特殊场合。
  2. 类型转换:将对象从一种给定的类型转换为另一种类型。
  3. 字面值常量:整型字面值,浮点型字面值,字符字面值,字符串字面值,转义序列,字面值前缀和后缀,布尔字面值,指针字面值。

备注:

  1. 整型包括布尔类型和字符类型。
  2. bit是数据存储的最小单位,byte是数据处理的基本单位,字是整数运算的自然单位:1 word = 4 byte(32位机器), 1byte = 8 bit。
  3. 类型选择:若数值不为负选用无符号类型;整型运算选用int;算术表达式不用char或bool;浮点数运算选用double。
  4. 切勿混用带符号类型和无符号类型。

2.2 变量

基本内容:

  1. 变量定义:类型说明符+变量名列表。初始化,列表初始化,默认初始化。
  2. 变量声明与变量定义:声明和定义都规定变量的类型和名字,此外定义申请存储空间,可能初始化;变量只能定义一次,声明多次。
  3. 标识符:由字母、数字和下划线组成,必须以字母或下划线开头,区分大小写。
  4. 名字作用域:全局作用域,块作用域,内层作用域,外层作用域

备注:

  1. 初始化 != 赋值。
  2. 用{}进行列表初始化,函数体内部的内置类型变量不会被默认初始化。
  3. 变量名用小写,类名以大写开头,多个单词用下划线连接。
  4. 变量第一次使用时,在其前定义变量。

2.3 复合类型

基本内容:

  1. 引用即别名,并非对象,必须初始化,且只能绑定一个对象,不能绑定字面值或表达式计算结果,引用类型与绑定对象类型严格匹配(const和class例外)。
  2. 指针是“指向”另一种类型的符合类型。指针值可以指向一个对象,可以指向紧邻对象所占空间的下一位置,可以是空指针,或者是无效指针。指针类型与指针对象类型必须严格匹配(const和class例外)。void*指针可以存放任意类型指针。
  3. 一条语句定义多个变量,但需注意各个变量类型;多重指针;指向指针的引用。

备注:

  1. 声明语句=基本数据类型+声明符列表。
  2. 引用和指针都实现对其它对象的间接访问,但引用不是对象,指针是对象;引用必须初始化,指针无需在定义时赋初值;引用只能绑定一个对象,指针可以指向不同对象。
  3. 初始化所有指针。
  4. 没有指向引用的指针,因为引用不是对象。

2.4 const限定符

基本内容:

  1. const定义常量,必须初始化,const对象不可修改,默认只在文件内有效。
  2. 引用特例:在初始化常量引用时,可用任意表达式做初值。
  3. 指针特例:允许指向常量的指针指向一个非常量(非常量转换成常量);常量指针必须初始化。
  4. 顶层const即对象本身是常量,底层const即指针指向的对象或引用绑定的对象是常量。
  5. constexpr变量一定是常量,必须用常量表达式初始化;只有字面值类型才能被定义成constexpr;constexpr只对指针有效,对指针对象无效

备注:

  1. 外部文件调用const常量,需对const变量的声明和定义都添加extern。
  2. 指向常量的指针(const int *p),常量指针(int * const p)。

2.5 处理类型

基本内容:

  1. 类型别名typedef,定义类型而不定义变量。当类型别名与引用,指针混用时,类型别名是一个整体,不能与原类型替换。
  2. auto类型说明符可通过变量初始值推算出变量类型,auto定义必须初始化。当表达式是引用时,auto类型是引用绑定的那个对象的类型,auto忽略顶层const,只保留底层const。
  3. delctype类型指示符选择并返回操作数的数据类型,若操作数以括号括起来,则delctype类型永远是引用。

备注:

  1. 一条语句可定义多个变量,&和*只从属于其后的声明符,而非其前的基本数据类型。
  2. auto与delctype的区别:delctype返回操作数类型,若包含括号,则返回引用;auto类型一般是表达式类型,若是引用,auto是引用绑定的对象的类型,若是const,则auto忽略顶层const,保留底层const。

2.6 自定义数据结构

基本内容:

  1. Sales_data类型的定义与使用。
  2. 头文件的编辑,编译,运行。
  3. 预处理器,头文件保护符

备注:

  1. 对象的定义与类的定义最好不要放在一起。
  2. 类内的数据成员可用花括号和等号初始化,不能用圆括号初始化。
  3. 头文件一般都要设置保护符,保护符名字由类名构建,需全部大写。