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

Mr_*_*s_D 20 c++ parsing constructor new-operator

可能重复:
类型名称后的括号是否与new有所不同?

所以我在我的主要:

Class* pC = new Class;
Run Code Online (Sandbox Code Playgroud)

它的工作原理是

Class* pC = new Class();
Run Code Online (Sandbox Code Playgroud)

我今天才意识到我省略了括号(所以我在某种程度上被最令人烦恼的解析的"对立"所击中).

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

Mik*_*our 45

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

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

  • +1,不知道这个差异. (7认同)