比方说,我有一个类不执行和删除常用操作符有什么区别?
class Object
{
public:
Object(int i) : num(i) {};
int getNum() const { return num; }
private:
int num;
};
现在,如果我尝试这样做
Object obj{ 1 };
Object obj2{ 2 };
Object obj3 = obj + obj2; //This is wrong
这是非法的:'Object' does not define this operator or a conversion to a type acceptable to the predefined operator
。
添加Object operator+(const Object&) = delete;
不会改变任何内容,除了错误消息:'Object Object::operator +(const Object &)': attempting to reference a deleted function
。
delete
delete
是否只有具有隐式声明(如赋值运算符和复制/移动构造函数)的运算符才需要,还是它改变了我的情况?
我认为这是添加到语言的主要原因是防止复制或明确朝。 – karakfa
这就是我的想法,但如果允许的话,就必须有一个原因。 – Rakete1111