初始化与清除:
初始函数在对象创建时候由编译器自动调用所以初始化函数的命名需要考虑到
1) 命名不能与类中的其他函数重名
2) 该函数能被编译器识别并自动调用
所以构造函数的名字与类的名字相同
例如
classX{
intI;
public:
X();
}
voidf(){
Xa;//在这里还调用了X::X(X*this)对对象a中的成员变量进行了赋值操作
}
析构函数和初始化函数是非常特殊的函数:他们没有返回值。如果他们有了返回值,要么编译直到怎么处理返回值,要么用户自己定义怎么处理,这样程序员将显示的调用构造函数和析构函数会破坏安全性。
析构函数:
ClassY{
public:
~Y()
};
析构函数调用的唯一证据是包含该对象的右括号,所以使用非局部的goto语句将造成对象不被释放的问题。
清除定义块
在C++中数据的定义不在像C语言一样一定要在函数的开头将数据变量定义好,可以在使用到该对象的时候进行定义,方便了对程序的理解。
集合初始化:
对于数组之类的数据进行初始化
这里注意的是缺省构造函数
class Y{
intl;
public:
Y(inti){
l=i;
}
Y(){
l=0;
}
}
Y y[2]={Y(1)};
使得y[0].1为1,y[1].l为0
这后面数组成员的初始化将会调用它的缺省构造函数