来自Java和C#世界,我总是喜欢使用
someclass a = someclass();
而不是
someclass a();
在C ++中初始化一个类变量。但是,我的编译器有时会抱怨
Error C2280: Attempting to reference a deleted function
它们之间有什么区别吗?哪一个更好?
答案 0 :(得分:7)
它们之间有什么区别吗?
一个大问题:someclass a();
is declaring a function!
在C++17's copy ellision之前,someclass a = someclass();
要求类可以移动,这可能不是这里的错误Attempting to reference a deleted function
。
哪一个更好?
无。改为使用:
someclass a;
或
someclass a{}; // C++11
两者都会致电default constructor。
答案 1 :(得分:-2)
C ++用户中的亲爱的朋友按如下方式创建对象
classname objectname;
#include<iostream>
using namespace std;
class demo
{
public:
void print()
{
cout<<"Demo class";
}
};
int main()
{
demo d;
d.print();
return 0;
}
OUTPUT 演示课
使用指针对象
#include<iostream>
using namespace std;
class demo
{
public:
void print()
{
cout<<"Demo class using pointer object";
}
};
int main()
{
demo *d = new demo();
d->print();
return 0;
}
OUTPUT 使用指针对象的演示类
在java中,垃圾收集是自动完成的。我希望你理解概念。