C++中的类a()和类a = class()有什么区别?

dog*_*719 4 c++ initialization class

来自Java和C#世界,我总是喜欢使用

someclass a = someclass();
Run Code Online (Sandbox Code Playgroud)

代替

someclass a();
Run Code Online (Sandbox Code Playgroud)

在C++中初始化一个类变量.但是,我的编译器有时会抱怨

Error C2280: Attempting to reference a deleted function
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别吗?哪一个更好?

O'N*_*eil 7

它们之间有什么区别吗?

一个大问题:someclass a();宣布一个功能!

并且someclass a = someclass();,在C++ 17的复制椭圆之前,要求类是可移动的,这可能不是这里的情况,因为你得到了错误Attempting to reference a deleted function.

哪一个更好?

没有.改为使用:

someclass a;
Run Code Online (Sandbox Code Playgroud)

要么

someclass a{}; // C++11
Run Code Online (Sandbox Code Playgroud)

两者都将调用默认构造函数.