这个问题已经在这里有了答案:
已关闭8年。
以下代码段在C++中是否相同:
片段1:
MyFunnyClass o = MyFunnyClass();
件2:
MyFunnyClass o;
我知道以下内容并不等效,但是我不确定顶部的两个内容:
MyFunnyClass o = MyFunnyClass () ;
MyFunnyClass o;
o = MyFunnyClass();
最佳答案
MyFunnyClass o () ;
这根本不会定义任何对象。这是Most Vexing Parse。
o
是一个不带任何内容并返回您已声明的MyFunnyClass
的函数。真正的语法是
MyFunnyClass o;
这将默认构造一个对象。
MyFunnyClass o = MyFunnyClass();
值构造一个对象,然后将其复制或移动到
o
中。在这里期望省略。