class base {
public:
int foo();
int foo(int a);
int foo(char* b);
int doSomething(int);
}
class derived : public base
{
public:
int doSomething(int b);
}
int derived::doSomething( int b)
{
base::doSomething(b);
//Make Something else
}
int main()
{
derived d= new derived();
d->foo();
}
现在在 foo 方法(其中任何一个)中我想调用更具体的 doSomething。如果我实例化一个派生类,我想要派生类的 doSomething,如果我实例化一个基类,我想要基类的 doSomething,尽管我是从基类中实现的 foo 方法调用。
int base::foo()
{
//do something
makeSomething(5);
}
最佳答案
在您的基类中,使 doSomething 方法成为虚拟方法:
public:
virtual int doSomething(int);
然后你可以:
Base* deriv = new Derived();
Base* base = new Base();
deriv->doSomething();
base->doSomething();
尽情享受吧!
关于c++ - 在 C++ 中覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204699/