我有一个纯虚基类和派生类。我知道我可以在基类中实现虚拟(非纯)方法。
我不明白的是,为什么我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;
}
答案 0 :(得分:4)
你不必这样做。您可以执行以下操作:
class Derived : public Abstract {
这样,您可以使用基类中的公共方法。