Skip to content

Latest commit

 

History

History
20 lines (20 loc) · 1.92 KB

chapter2.md

File metadata and controls

20 lines (20 loc) · 1.92 KB

第2章 用户自定义类型

2.1 引言

  • 利用C++的抽象机制从其他类型构造出来的类型称为用户自定义类型(user-defined type),即(class)和枚举(enumeration)。

2.2 结构

  • new操作符从名为自由存储(也叫动态内存或者)的区域中分配内存。分配在自由存储中的对象作用域与创建时所处的作用域无关,它会一直“存活”,直到调用delete操作符销毁它为止。
  • 访问struct成员有两种方式,通过名字或者引用来访问时用.(点),通过指针访问时用->

2.3 类

  • 按照惯例,通常将public声明放在前面,把private声明放在后面,除非需要特别强调private成员的实现。
  • 我们常用的两个关键字structclass没有本质区别,唯一的不同之处在于,struct的成员默认是public的。

2.4 枚举

  • 枚举类型用于表示少量整数数值的集合。通过使用符号(或者助记符)名称替代整数,枚举值可以提升代码的可读性,降低潜在错误。
  • 如果你不想显式指定枚举的名称,并且希望枚举值的类型直接是int(而不需要显式类型转换),可以去掉enum classclass字样,得到一个“普通的”enum
    • 普通enum中的枚举值进入与enum自身同级的作用域,并且可以被隐式转换为整数数值。

2.5 联合

  • union是一种特殊的struct,它的所有成员都被分配在同一块内存区域中,因此,union实际占用的空间就是它最大的成员所占的空间。
    • 显然,同一时刻,union中只能保存一个成员的值。
  • 也可以使用标准库类型variant,从而消除大多数需要直接使用union的情形。
    • variant保存给定的类型列表集合中的一个值。

2.6 建议

  • 避免使用“裸”union;将其与类型字段一起封装到一个类中。