【发布时间】:2016-08-26 08:52:44
【问题描述】:
我有两个类代表某些方法的上下文。
class BaseContext {};
class DerivedContext : public BaseContext {};
我有一个基类:
class MyBase {
protected:
virtual void doSome(BaseContext* context);
};
还有一个派生类:
class MyDerived : public MyBase {
protected:
virtual void doSome(DerivedContext* context) override; // Overriding
virtual void doSome(DerivedContext* context); // Overloading?
};
由于DerivedContext 派生自BaseContext,看来我正在覆盖doSome。但它也可能是一个重载......
- 哪一个是正确的?我是在这里覆盖还是重载?
- 因此,如果我输入
(MyBase* my = new MyDerived())->doSome(new DerivedContext()),我应该得到什么?
【问题讨论】:
-
您的派生类型有两个相同的方法 -
override不会更改类型 - 这是不允许的。他们中的一个人应该接受BaseContext论点吗?
标签: c++ overloading overriding