title: C++: override or overload?
body: <p>I have two classes representing contexts for some methods.</p>
  
  <pre><code>class BaseContext {};
  class DerivedContext : public BaseContext {};
  </code></pre>
  
  <p>I have a base class:</p>
  
  <pre><code>class MyBase {
  protected:
    virtual void doSome(BaseContext* context);
  };
  </code></pre>
  
  <p>And a derived class:</p>
  
  <pre><code>class MyDerived : public MyBase {
  protected:
    virtual void doSome(DerivedContext* context) override; // Overriding
    virtual void doSome(DerivedContext* context); // Overloading?
  };
  </code></pre>
  
  <p>Since <code>DerivedContext</code> derives from <code>BaseContext</code>, it might seems that I am overriding <code>doSome</code>. But it might also be an overloading...</p>
  
  <ol>
  <li>Which one is correct? Am I overriding or overloading here?</li>
  <li>Thus, if I type <code>(MyBase* my = new MyDerived())-&gt;doSome(new DerivedContext())</code>, what should I get?</li>
  </ol>