声明一个哺乳动物Mammal类,再由此派生出狗Dog类,两者都定义Speak()成员函数,基类中定义为虚函数。声明一个Dog类对象,调用Speak()函数,观察运行结果。(数据和输出内容自定)
时间: 2024-03-07 07:48:36 浏览: 83
C++给出一个哺乳动物类,要求从此派生出一个狗类
3星 · 编辑精心推荐
好的,下面是代码示例:
```c++
#include <iostream>
using namespace std;
class Mammal {
public:
virtual void Speak() {
cout << "Mammal speak" << endl;
}
};
class Dog : public Mammal {
public:
void Speak() {
cout << "Dog bark" << endl;
}
};
int main() {
Dog myDog;
myDog.Speak(); // 输出:Dog bark
Mammal* myMammal = &myDog;
myMammal->Speak(); // 输出:Dog bark
return 0;
}
```
首先声明了一个 `Mammal` 类,其中定义了一个虚函数 `Speak()`,并且没有实现。然后我们派生出了一个 `Dog` 类,其中覆盖了基类的 `Speak()` 函数,实现为输出 "Dog bark"。
在 `main()` 函数中,我们创建了一个 `Dog` 类对象 `myDog`,并调用其 `Speak()` 函数,输出 "Dog bark"。接着我们将 `myDog` 对象的地址赋值给一个指向基类 `Mammal` 的指针 `myMammal`,并调用其 `Speak()` 函数,此时由于 `Mammal::Speak()` 是虚函数,因此会动态绑定到 `Dog::Speak()` 函数上,输出 "Dog bark"。
阅读全文