简介:C++的安全性:初始化和清除。这两个概念是简化库的使用的关键所在。
6.1 用构造函数确保初始化
构造函数的名字与类的名字一样。
class X {
int i;
public:
X ( ) ; // 构造函数
}
传递到构造函数的第一个(秘密)参数是this指针,也就是调用这一函数的对象的地址。
构造函数和析构函数没有返回值。
6.2 用析构函数确保清除
析构函数的语法与构造函数一样,用类的名字作为函数名。析构函数名字前加上(~),以和构造函数区别。
析构函数不带任何参数,因为析构不需任何选项。
class Y {
public:
~Y ( );
}
当对象超出它的作用域时,编译器将自动调用析构函数。
6.3 清除定义块
应该在尽可能靠近变量的使用点处定义变量,并在定义时就初始化。(出于安全性和可读性)
内存的分配是通过编译器向下移动堆栈指针来实现的。
6.4 带有构造函数和析构函数的Stash
6.5 带有构造函数和析构函数的Stack
6.6 集合初始化
struct Y {
float f;
int i;
Y(int a);
}
初始化:
Y y1[] = {Y(1), Y(2), Y(3)};
6.7 默认构造函数
即不带任何参数的构造函数