C++ C++;使用参数调用默认构造函数与不使用参数调用默认构造函数
可能重复:C++ C++;使用参数调用默认构造函数与不使用参数调用默认构造函数,c++,default-constructor,C++,Default Constructor,可能重复: 像这样调用基构造函数有什么区别吗 Foo afoo; vs 是:第一个是变量定义,第二个是函数声明。现在,让我们讨论这两个表达式之间的差异这一更有趣的问题: new Foo() new Foo 是否存在差异取决于Foo的类型及其成员 如果Foo有一个显式的默认构造函数,那么这两个构造函数是相同的 如果没有默认构造函数,则可能存在差异!如果有任何成员是聚合或内置类型,则它将在第一个表达式中初始化,但不会在第二个表达式中初始化,除非所有具有默认构造的成员都将是默认构造的 请注意
像这样调用基构造函数有什么区别吗
Foo afoo;
vs
是:第一个是变量定义,第二个是函数声明。现在,让我们讨论这两个表达式之间的差异这一更有趣的问题:
new Foo()
new Foo
是否存在差异取决于Foo
的类型及其成员
- 如果
有一个显式的默认构造函数,那么这两个构造函数是相同的Foo
- 如果没有默认构造函数,则可能存在差异!如果有任何成员是聚合或内置类型,则它将在第一个表达式中初始化,但不会在第二个表达式中初始化,除非所有具有默认构造的成员都将是默认构造的
Foo aFoo = Foo();
如果没有显式构造函数接受参数或您不知道(例如,在模板代码中)。是的,#2正在声明一个函数。是的,第一个构造函数构造的对象类型为
Foo
,第二个构造函数没有。谢谢您的分解,很抱歉重复了'?'
Foo aFoo = Foo();