如果默认构造函数不执行任何操作,则目的是什么



我已经读到默认构造函数不执行任何操作(如果某些条件为真并且这些条件为真,则类 T 的默认构造函数是微不足道的(即不执行任何操作(,我猜这些条件在隐式定义时为真。 http://en.cppreference.com/w/cpp/language/default_constructor

那么,如果它不执行任何操作,为什么编译器甚至会添加它,为什么类需要它?

谢谢!

其目的是在没有合适的构造函数可用的情况下使对象栩栩如生

例:

struct Foo{};
struct Bar
{
    Bar() = delete; // no default constructor
};
int main()
{
    Foo f;
//  Bar b;  // does not compile
}

CRT 在实例化类时调用构造函数,因此必须存在一个构造函数才能调用,即使它"什么都不做"。如果由于该原因未提供默认构造函数,编译器将为您生成默认构造函数。否则,将无法实例化对象。施工时发生的事情的规则、步骤和顺序只是语言的一部分。

即使主体为空,仍会在构造时初始化类的数据成员。

此外,请考虑在构造时如果类派生自另一个类会发生什么情况。

有关构造函数主题的深入了解,请参阅 http://isocpp.org/wiki/faq/ctors#overview-ctors。

因为编译器只会在需要调用时才生成默认构造函数。例如,这可以由派生class或标准库容器提供。 编译器仍然可以自由地优化它,因为它具有显式定义的"无所事事"功能。

相关内容

最新更新