这个问题已经在这里有了答案:




已关闭8年。






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

片段1:

MyFunnyClass o = MyFunnyClass();

件2:
MyFunnyClass o;

我知道以下内容并不等效,但是我不确定顶部的两个内容:
MyFunnyClass o = MyFunnyClass () ;

MyFunnyClass o;
o = MyFunnyClass();

最佳答案

MyFunnyClass o () ;

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

真正的语法是
MyFunnyClass o;

这将默认构造一个对象。
MyFunnyClass o = MyFunnyClass();

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

09-13 04:00