在VS2019用C++写一个满足多态和继承的例子,详细解释该程序的意义、背景及在哪里体现了继承性与多态性
时间: 2024-02-17 12:00:58 浏览: 72
好的,下面是一个详细解释的例子:
```cpp
#include <iostream>
using namespace std;
// 基类 Animal
class Animal {
public:
virtual void speak() {
cout << "动物发出声音" << endl;
}
};
// 派生类 Dog,继承自 Animal
class Dog : public Animal {
public:
void speak() {
cout << "汪汪汪" << endl;
}
};
// 派生类 Cat,继承自 Animal
class Cat : public Animal {
public:
void speak() {
cout << "喵喵喵" << endl;
}
};
// 派生类 Sheep,继承自 Animal
class Sheep : public Animal {
public:
void speak() {
cout << "咩咩咩" << endl;
}
};
int main() {
Animal *animal;
Dog dog;
Cat cat;
Sheep sheep;
animal = &dog;
animal->speak(); // 输出:汪汪汪
animal = &cat;
animal->speak(); // 输出:喵喵喵
animal = &sheep;
animal->speak(); // 输出:咩咩咩
return 0;
}
```
这个程序定义了一个基类 Animal,以及三个派生类 Dog、Cat、Sheep,它们都继承自 Animal。在 Animal 中定义了一个虚函数 speak(),在派生类中都重写了这个函数,实现了多态。在 main() 函数中,我们通过指向基类对象的指针来调用不同的派生类中的 speak() 函数,实现了多态。
这个程序的意义在于,通过继承和多态的机制,我们可以定义一个通用的基类 Animal,然后根据具体的需求,定义不同的派生类,实现不同的功能。例如,在这个程序中,我们定义了三个不同的派生类,分别代表了狗、猫、羊,它们都有自己的 speak() 函数,分别输出不同的声音。
在这个程序中,继承性体现在派生类 Dog、Cat、Sheep 继承了基类 Animal 中的属性和方法,包括虚函数 speak()。而多态性则体现在 Animal 中定义的虚函数 speak(),它被派生类重写后,可以根据对象的实际类型,调用不同的函数,实现了不同的功能。例如,当我们将 animal 指向 Dog 类型的对象时,调用 speak() 函数时会输出“汪汪汪”,而将 animal 指向 Cat 类型的对象时,调用 speak() 函数时会输出“喵喵喵”。这就是多态的体现。
阅读全文