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

时间:2017-05-19 14:29:58

标签: c++

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

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

谢谢!

3 个答案:

答案 0 :(得分:2)

如果没有合适的构造函数,它的目的就是将对象带入生活

示例:

struct Foo{};

struct Bar
{
    Bar() = delete; // no default constructor
};

int main()
{
    Foo f;
//  Bar b;  // does not compile
}

答案 1 :(得分:2)

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

即使身体是空的,它仍然处于施工时间。数据成员已初始化。

另外,考虑在施工时该类是从另一个派生的,会发生什么。

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

答案 2 :(得分:1)

因为编译器只在需要调用时才生成默认构造函数。例如,这可以是派生的class或标准库容器。编译器仍然可以自由地优化它,就像使用明确定义的无操作函数一样。