(1) union(共用体)对内存要求特别严格的地方,union会频繁出现,在union中,各成员共享一段内存空间
一个union变量的长度等于各成员中最长的长度。
共享:指该共用体变量可被赋予任一成员值,但每次只能赋一种值,赋入新值则冲去旧值。
anonymous union(匿名共用体):共用体没有任何类型和变量名。
void main() {
union {
int i;
float j;
}
i = 12;
j = 1.22f;
}
(4) magic number
float radius = 3.0f; float perimeter = radius*3.14;
没有特别说明3.14这个数字很魔幻,导致代码可读性差,修改不方便。
应该将其定义为常量、枚举类型或宏定义,不要在代码中直接使用特定的数值。
特定情况下,可用于观察和调用程序中出现的错误。0xcdcd是微软C++ Debug运行库为没有初始化的堆内存所做的标记;0xcccc是为未初始化的栈内存所做的标记。
(5) Aggregate(聚合体)
⓵最大的特点是可以直接使用{}括起来的初始化列表进行初始化,不能有用户自定义的构造函数,不能有private和protected权限,不能有基类和虚函数。
⓶未知大小的数组可以用包含n个元素的初始化列表初始化。例如:int x[] = {1, 2, 3};
⓷结构的Aggregate中如果包含静态成员变量,在初始化列表中不考虑该变量。
struct A {
int i;
static int s;
int j;
} a = {1, 2};//这里初始化的是a.i和a.j
⓸初始化列表中的元素的个数少于Aggregate成员的个数,未明确指出的Aggregate成员将被默认初始化。
⓹出事化列表可以初始化union,但只能初始化其第一个元素。