【问题标题】:Not using parentheses in constructor call with new (c++) [duplicate]在使用new(c ++)的构造函数调用中不使用括号[重复]
【发布时间】:2011-07-09 19:49:27
【问题描述】:

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

所以我主要是:

Class* pC = new Class;

它的工作原理是

Class* pC = new Class();

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

我的问题:这两种形式是否等效?

【问题讨论】:

  • 两个调用都调用默认构造函数。

标签: c++ parsing constructor new-operator


【解决方案1】:

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

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

【讨论】:

  • +1,不知道这个区别。
猜你喜欢
  • 2012-07-06
  • 2015-06-29
  • 2013-03-02
  • 2020-05-28
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多