- 利用C++的抽象机制从其他类型构造出来的类型称为用户自定义类型(user-defined type),即类(class)和枚举(enumeration)。
new
操作符从名为自由存储(也叫动态内存或者堆)的区域中分配内存。分配在自由存储中的对象作用域与创建时所处的作用域无关,它会一直“存活”,直到调用delete
操作符销毁它为止。- 访问
struct
成员有两种方式,通过名字或者引用来访问时用.
(点),通过指针访问时用->
。
- 按照惯例,通常将
public
声明放在前面,把private
声明放在后面,除非需要特别强调private
成员的实现。 - 我们常用的两个关键字
struct
和class
没有本质区别,唯一的不同之处在于,struct
的成员默认是public
的。
- 枚举类型用于表示少量整数数值的集合。通过使用符号(或者助记符)名称替代整数,枚举值可以提升代码的可读性,降低潜在错误。
- 如果你不想显式指定枚举的名称,并且希望枚举值的类型直接是
int
(而不需要显式类型转换),可以去掉enum class
中class
字样,得到一个“普通的”enum
。- 普通
enum
中的枚举值进入与enum
自身同级的作用域,并且可以被隐式转换为整数数值。
- 普通
union
是一种特殊的struct
,它的所有成员都被分配在同一块内存区域中,因此,union
实际占用的空间就是它最大的成员所占的空间。- 显然,同一时刻,
union
中只能保存一个成员的值。
- 显然,同一时刻,
- 也可以使用标准库类型
variant
,从而消除大多数需要直接使用union
的情形。variant
保存给定的类型列表集合中的一个值。
- 避免使用“裸”
union
;将其与类型字段一起封装到一个类中。