CPP中强调初始化和清除的动作,这样会减少在C语言中因为没有正确初始化和清除所造成的错误。在CPP中这两种工作时有特定的函数完成的,即构造函数和析构函数。
这两种函数有着特殊的名字,即和类名或结构名相同例如:
class X {
int i,j;
public:
X(int ii,int jj); //构造函数
~X(); //析构函数
};
在类的对象定义时构造函数会被自动调用进行初始化动作,在对象离开其作用域时析构函数会自动被调用进行清除动作。在JAVA中没有析构函数的概念,清除动作时由垃圾回收器自动完成的,这也是CPP与JAVA的不同之处。
如果程序员没有为类或结构定义构造函数,编译器会自动产生一个默认的构造函数,这个默认的就是没有参数的构造函数。但只要程序员定义了一个构造函数,编译器便不会再产生任何的额外的构造函数了。例如Y类的定义如下:
class Y {
float f;
int i;
Y(int a);
};
初始化一个数组:
Y y2[2]={Y(5)};
或者定义一个对象:
Y y1;
这个时候编译器会报告找不到默认的构造函数。