2012-01-12 114 views

回答

2

是:第一个是变量定义,第二个是函数声明。现在,让我们讨论这两个词语之间的差异的更有趣的问题:

new Foo() 
new Foo 

是否有差别取决于Foo及其成员的类型!

  • 如果Foo有一个明确的默认构造函数两个相同
  • 如果没有默认的构造函数,有一个潜在的区别!如果有任何成员是聚集或内置类型,它将在第一个表达式中进行初始化,但不会在第二个表达式中进行初始化,除非所有具有默认构造的成员都将默认构造。

请注意,这也适用于类的成员。对于变量不能使用使用括号的形式,即以确保初始化对象,你需要使用

Foo aFoo = Foo(); 

如果没有明确的构造函数取一个参数,或者你不知道(例如,在模板代码) 。

+0

感谢您的分解和遗憾,重复'?' – pyInTheSky 2012-01-12 19:14:08