【发布时间】:2020-03-04 09:48:31
【问题描述】:
考虑这段代码sn-p:
#include <bits/stdc++.h>
using namespace std;
class Mammal;
class Operation;
class Animal{
public:
virtual void doOp(Operation* op) = 0;
};
class Mammal{
public:
void doOp(Operation* op){
op->thisIsMammal(this);
}
};
class Pig: public Mammal, public Animal{
};
class Operation{
public:
void thisIsMammal(Mammal* mammal){
cout << "This is a mammal!" << endl;
}
};
int main(){
Pig pig;
Operation op;
pig.doOp(&op);
return 0;
}
Animal 类中声明了一个虚函数,需要在Pig 类中重新定义。但是,Pig 派生自 Mammal,具有该函数的定义
我仍然收到该函数尚未在派生类中重新定义的错误。有什么方法可以使Mammal 中的定义足够?
【问题讨论】:
-
不,C++ 不能以这种方式工作。您必须在子类中声明虚函数,并让子类的函数显式调用实现超类中的实现。
-
也许this 是怎么回事?
-
您可能还想研究/使用override specifier。
标签: c++ oop overriding multiple-inheritance virtual-functions