使用new(c ++)在构造函数调用中不使用括号

时间:2011-03-06 14:36:48

标签: c++ parsing constructor new-operator

  

可能重复:
  Do the parentheses after the type name make a difference with new?

所以我的主要内容是:

Class* pC = new Class;

它的工作原理是

Class* pC = new Class();

我今天才意识到我省略了括号(所以我在某种程度上遭到了最令人烦恼的解析的“反面”)。

我的问题:这两种形式是否相同?

1 个答案:

答案 0 :(得分:44)

如果类定义了默认构造函数,则两者都是等价的;该对象将通过调用该构造函数来创建。

如果类只有一个隐式默认构造函数,那么就有区别。第一个将保留POD类型的任何成员未初始化;第二个将对它们进行值初始化(即将它们设置为零)。