我已经读过默认构造函数不执行任何操作(类T的默认构造函数是微不足道的(即不执行任何操作)如果某些条件为真并且那些条件为真我猜是在隐式定义时。http://en.cppreference.com/w/cpp/language/default_constructor < / p>
因此,如果它不执行任何操作,为什么它甚至被编译器添加,为什么它需要类?
谢谢!
答案 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
或标准库容器。编译器仍然可以自由地优化它,就像使用明确定义的无操作函数一样。