用构造函数确保初始化 |
在一个对象被定义时:
X a;
这时就好像a是一个int一样:为这个对象分配内存。但是当程序执行到a的序列点执行的点时,构造函数自动被调用,因为编译器已悄悄地在a的定义点处插入了一个X::X()的调用。就像其他成员函数被调用一样。传递到构造函数的第一个(秘密)参数是this指针,也就是调用这一函数的对象的地址,不过,对构造函数来说,this指针指向一个没有被初始化的内存块,构造函数的作用就是正确的初始化该内存块。
默认构造函数 |
记住,一旦有了构造函数,编译器就会确保不管在什么情况下它总会被调用。
默认的构造函数非常重要,所以当一个结构或类中没有构造函数时,编译器会自动为它创建一个。如:
class V { int i; // private }; // No constructor int main() { V v,v2[10]; }
然而,一旦有构造函数而没有默认构造函数,上面的对象定义就会产生一个编译错误。