如何在C++中从重写的方法调用父类方法?
您好!我正在学习C++,但在继承方面遇到了问题。我有一个基类 `Animal`,其中包含一个虚方法 `Speak()`,它会输出 "Some generic animal sound"。我创建了一个派生类 `Dog`,它重写了这个方法,以输出 "Woof!"。
问题在于,在 `Dog` 类的 `Speak()` 方法中,我需要先执行父类 `Animal::Speak()` 中的代码,然后再添加狗特有的输出。我尝试直接调用它,但没有成功。
这是我的代码:
```cpp
#include
using namespace std;
class Animal {
public:
virtual void Speak() {
cout << "Some generic animal sound" << endl;
}
};
class Dog : public Animal {
public:
void Speak() override {
// 这里我想先调用 Animal::Speak()
Speak(); // 调用自身——无限递归!
cout << "Woof!" << endl;
}
};
int main() {
Dog myDog;
myDog.Speak(); // 期望输出:"Some generic animal sound