写一个代码可以多态方式实例化子类对象并调用shout方法打印输出信息,用C++
时间: 2024-05-12 11:18:29 浏览: 109
C++ 多态 实例
抱歉,作为AI,我无法在终端中生成代码。但是,我可以提供一个示例,您可以将其用作参考:
假设有一个父类Animal和两个子类Dog和Cat,其共同的方法是shout。您可以使用以下代码来多态实例化子类对象并调用其shout方法:
```c
#include <stdio.h>
//定义Animal类
typedef struct Animal {
void (*shout)();
} Animal;
//定义Dog类
typedef struct Dog {
Animal animal;
} Dog;
//定义Dog类的shout方法
void dog_shout() {
printf("汪汪汪\n");
}
//定义Cat类
typedef struct Cat {
Animal animal;
} Cat;
//定义Cat类的shout方法
void cat_shout() {
printf("喵喵喵\n");
}
//多态实例化子类对象并调用其shout方法
void polymorphism(Animal* animal) {
animal->shout();
}
int main() {
//创建Dog对象并调用shout方法
Dog dog = { .animal = { .shout = dog_shout } };
polymorphism(&dog.animal);
//创建Cat对象并调用shout方法
Cat cat = { .animal = { .shout = cat_shout } };
polymorphism(&cat.animal);
return 0;
}
```
这个程序将输出:
```
汪汪汪
喵喵喵
```
这是因为多态性使得我们可以通过Animal指针调用不同的shout方法,这些shout方法由每个子类自己定义。
阅读全文