1. 首页
  2. 编程语言
  3. C++ 
  4. Second Edition缺省构造函数详解

Second Edition缺省构造函数详解

上传者: 2024-07-23 23:37:07上传 PDF文件 14.32MB 热度 12次

4.7 缺省构造函数就是不带任何参数的构造函数。缺省的构造函数用来创建一个“香草(vanilla)对象”,当编译器需要创建一个对象而又不知任何细节时,缺省的构造函数就显得非常重要。比如,我们有一个类Y,并用它来定义对象:Y y4[2] = {Y(1)}。编译器就会报告找不到缺省的构造函数,数组中的第二个对象想不带参数来创建,所以编译器就去找缺省的构造函数。实际上,如果我们只是简单地定义了一个Y对象的数组:Y y5[7];或一个单一的对象Y y;编译器会报告同样的错误,因为它必须用一个缺省的构造函数去初始化数组中的每个对象。(记住,一旦有了一个构造函数,编译器就会确保不管在什么情况下它总会被调用)。

缺省的构造函数是如此重要,所以在一个构造类型(struct或class)中没有构造函数时,编译器会自动创建一个。因此下面例子将会正常运行:


class Z { 

    int i; // private 

}; 

// no constructor 

Z z,z2[10];

然而,一旦有构造函数而没有缺省构造函数,上面的对象定义就会产生一个编译错误。我们可能会想,缺省构造函数应该可以做一些智能化的初始化工作,比如把对象的所有内存置零。但事实并非如此。因为这样会增加额外的负担,而且使程序员无法控制。比如,如果我们把在C中编译过的代码用在C++中,就会导致不同的结果。如果我们想把内存初始化为零,必须亲自去做。

对一个C++的新手来说,自动产生的缺省构造函数并不会使编程更容易。它实际上要求与已有的C代码保持向后兼容。这是C++中的一个关键问题。有关更多详细的内容,您可以参考以下链接:

浅谈c++构造函数问题初始化和赋值问题C++中构造函数的参数缺省的详解,以及C++默认构造函数的问题

下载地址
用户评论