可能重复:
Do the parentheses after the type name make a difference with new?
所以我的主要内容是:
Class* pC = new Class;
它的工作原理是
Class* pC = new Class();
我今天才意识到我省略了括号(所以我在某种程度上遭到了最令人烦恼的解析的“反面”)。
我的问题:这两种形式是否相同?
答案 0 :(得分:44)
如果类定义了默认构造函数,则两者都是等价的;该对象将通过调用该构造函数来创建。
如果类只有一个隐式默认构造函数,那么就有区别。第一个将保留POD类型的任何成员未初始化;第二个将对它们进行值初始化(即将它们设置为零)。