c++ - 在 C++ 中覆盖

标签 c++ oop

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/

相关文章:

oop - 什么是 'exceptional' ?

c++ - OpenGL 和 GLUT/C++ 奇怪的纹理循环问题

c++ - “AMA::MyProduct”:无法实例化抽象类

c++ - strcmp 和复制的 char 数据的段错误

oop - 单一职责原则 - 一个很难看到的例子?

oop - 做Use Case时如何描述算法?

javascript - 动态 JavaScript 原型(prototype)扩展

c++ - 每次使用循环插入项目时,std::vector 如何重新分配?

c++ - json 到 C++ 结构

javascript - 鸭子类型(duck typing) : Translating Ruby Code into Javascript Utilizing Duck Typing