比方說,我有一個類不執行和刪除常用操作符有什麼區別?
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