What is the difference between not implementing and deleting common operators?
<p>Let's say I have a class</p>

<pre><code>class Object
{
public:
    Object(int i) : num(i) {};

    int getNum() const { return num; }
private:
    int num;
};
</code></pre>

<p>Now, if I try to do this</p>

<pre><code>Object obj{ 1 };
Object obj2{ 2 };
Object obj3 = obj + obj2; //This is wrong
</code></pre>

<p>This is illegal: <code>'Object' does not define this operator or a conversion to a type acceptable to the predefined operator</code>.</p>

<p>Adding <code>Object operator+(const Object&amp;) = delete;</code> doesn't really change anything, except for the error message: <code>'Object Object::operator +(const Object &amp;)': attempting to reference a deleted function</code>.</p>

<p>Is the <code>delete</code> only needed for operators that have an implicit declaration (like assignment operator and copy/move constructor) or does it change anything else in my case?</p>