 <p>When you define operators like <code>operator-</code> inside your class as member functions, then when you use it</p> <pre><code>C3 = C1 + C2; </code></pre> <p>The compiler is actually calling your member function like</p> <pre><code>C3 = C1.operator+(C2); </code></pre> <p>From this you should be able to figure out that operators as member functions only takes <em>one</em> argument, and that the first object in the operator is the <code>this</code> object.</p> <p>For stand-alone (non-member) functions they need two arguments.</p> <hr> <p>You might want to check e.g. <a href="http://en.cppreference.com/w/cpp/language/operators" rel="nofollow">this reference on operator overloading</a>.</p>