【问题标题】:Are these assignments on same pattern? [duplicate]这些作业是否采用相同的模式? [复制]
【发布时间】:2012-09-17 17:32:56
【问题描述】:

可能重复:
Shortcut for constructor

以下代码在 C++ 中是否相同:

件1:

MyFunnyClass o = MyFunnyClass();

件2:

MyFunnyClass o;

我知道以下不是等效的,但我不确定上面的两个:

MyFunnyClass o = MyFunnyClass () ;

MyFunnyClass o;
o = MyFunnyClass();

【问题讨论】:

  • 希望我明白你到底在比较什么 ;-)
  • 第一对不等价,第二对是等价的。
  • 这不是真正该问题的重复,尽管它是相关的。标记为重复的问题涉及 copy-initializationdirect-initialization,而在本例中是 default-initialization复制初始化.

标签: c++ constructor initialization default-constructor


【解决方案1】:
MyFunnyClass o () ;

这根本不以任何方式定义对象。这是Most Vexing Parseo 是一个不接受任何内容并返回您已声明的 MyFunnyClass 的函数。

真正的语法应该是

MyFunnyClass o;

这将默认构造一个对象。

MyFunnyClass o = MyFunnyClass();

值构造一个对象,然后将其复制或移动到o。在这里期待省略号。

【讨论】:

  • 这缺少最重要的信息:defaultvalue 初始化。最后一种情况是value初始化,而不是default初始化
  • 好喊大卫,我忘记了。
猜你喜欢
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多