如果我想使用基类实现,为什么我必须在派生类中实现虚函数

时间:2016-09-12 20:20:39

标签: c++ virtual pure-virtual

我有一个纯虚基类和派生类。我知道我可以在基类中实现虚拟(非纯)方法。 我不明白的是,为什么我HAVE在派生类中实现相同的方法,如果我想要的只是使用基本实现:

#include <iostream>

using namespace std;

class Abstract {
public:
    int x;
    Abstract(){
        cout << "Abstract constructor" << endl;
        x = 1;
    }
    virtual void foo() = 0;
    virtual void bar(){
        cout << "Abstract::bar" << endl;
    }
};

class Derived : Abstract {
public:
    int y;
    Derived(int _y):Abstract(){
        cout << "Derived constructor" << endl;
    }
    virtual void foo(){
        cout << "Derived::foo" << endl;
    }
    virtual void bar(){
        Abstract::bar();
    }
};

int main()
{
   cout << "Hello World" << endl;
   Derived derived(2);
   derived.foo();
   derived.bar(); //HERE I HAVE TO DEFINE Derived::bar to use it
   return 0;
}

1 个答案:

答案 0 :(得分:4)

你不必这样做。您可以执行以下操作:

class Derived : public Abstract {

这样,您可以使用基类中的公共方法。