用C++实现 多态方式实例化子类对象并调用shout方法打印输出信息,要求如下
时间: 2024-05-11 07:18:08 浏览: 99
好的,以下是C++实现多态方式实例化子类对象并调用shout方法打印输出信息的示例代码:
```cpp
#include <iostream>
using namespace std;
class Animal {
public:
virtual void shout() {
cout << "Animal shouts!" << endl;
}
};
class Dog : public Animal {
public:
void shout() override {
cout << "Woof! Woof!" << endl;
}
};
class Cat : public Animal {
public:
void shout() override {
cout << "Meow! Meow!" << endl;
}
};
int main() {
Animal* animalPtr;
Dog dog;
Cat cat;
animalPtr = &dog;
animalPtr->shout(); // 调用 Dog 的 shout 方法
animalPtr = &cat;
animalPtr->shout(); // 调用 Cat 的 shout 方法
return 0;
}
```
在上述代码中,首先定义了一个抽象类 `Animal`,其中包含了一个虚函数 `shout()`。然后定义了两个子类 `Dog` 和 `Cat`,分别重写了 `shout()` 函数。
在 `main()` 函数中,首先定义了一个指向 `Animal` 类的指针 `animalPtr`,然后使用 `&` 运算符将 `dog` 和 `cat` 对象的地址分别赋值给 `animalPtr`。这样,就可以通过 `animalPtr` 调用 `shout()` 函数了。
由于 `shout()` 函数是虚函数,因此在调用时会根据对象的实际类型来确定调用哪个版本的 `shout()` 函数,从而实现了多态。
阅读全文