第6章 初始化与清除

  用构造函数确保初始化

  在一个对象被定义时:

    X a;

  这时就好像a是一个int一样:为这个对象分配内存。但是当程序执行到a的序列点执行的点时,构造函数自动被调用,因为编译器已悄悄地在a的定义点处插入了一个X::X()的调用。就像其他成员函数被调用一样。传递到构造函数的第一个(秘密)参数是this指针,也就是调用这一函数的对象的地址,不过,对构造函数来说,this指针指向一个没有被初始化的内存块,构造函数的作用就是正确的初始化该内存块。

 

  默认构造函数

   记住,一旦有了构造函数,编译器就会确保不管在什么情况下它总会被调用。

 

  默认的构造函数非常重要,所以当一个结构或类中没有构造函数时,编译器会自动为它创建一个。如:

    class V {
    int i;  // private
    };      // No constructor

    int main() {
    V v,v2[10];
    }

  然而,一旦有构造函数而没有默认构造函数,上面的对象定义就会产生一个编译错误。

posted @ 2013-11-17 12:05  sheshiji  阅读(117)  评论(0编辑  收藏  举报