设计一个动物园程序,有两个类:动物类 Animal 和鸟类 Bird。其中,动物类包含公有属性 name 和 age,以及虚函数 show();鸟类继承自动物类,包含公有属性 wing_length,以及实现 show() 函数,打印出鸟的基本信息和翅膀长度。 要求: 1. 使用多态特性,定义一个指向动物类对象的指针,指向鸟类对象,并通过该指针调用 show() 函数。 2. 实现一个函数,用于输出年龄大于指定值的鸟类对象的信息。 3. 在main函数中对所有要求的功能进行测试。
时间: 2023-06-08 20:05:03 浏览: 175
好的,你的第一个问题是一个关于设计动物园程序的问题。这个程序需要两个类,一个是动物类 Animal,另一个是鸟类 Bird。动物类包含公有属性 name 和 age,以及虚函数 show();鸟类继承自动物类,包含公有属性 wing_length,以及实现 show() 函数,打印出鸟的基本信息和翅膀长度。
回答您的问题:
1. 使用多态特性,定义一个指向动物类对象的指针,指向鸟类对象,并通过该指针调用 show() 函数。
可以通过以下代码实现:
```
Animal *p = new Bird(); // 定义一个指向动物类对象的指针,指向鸟类对象
p->show();
delete p; // 切记在使用完后要进行内存释放
```
2. 实现一个函数,用于输出年龄大于指定值的鸟类对象的信息。
可以通过以下代码实现:
```
void PrintAgeMoreThan(int age, Bird *birds, int size) {
for (int i = 0; i < size; i++) {
if (birds[i].GetAge() > age) {
birds[i].show();
}
}
}
```
这个函数的逻辑是遍历鸟类对象数组,当鸟的年龄大于指定值时,调用 show() 方法输出该鸟类对象的信息。
3. 在 main 函数中对所有要求的功能进行测试。
可以尝试使用以下代码实现:
```
int main() {
// 创建一只鸟类对象
Bird *bird = new Bird("麻雀", 2, 20);
bird->show();
delete bird;
// 创建鸟类对象数组
Bird birds[] = {
Bird("喜鹊", 1, 23),
Bird("黄鹂", 3, 28),
Bird("松鸦", 2, 19),
Bird("乌鸦", 4, 25)
};
// 输出年龄大于指定值的鸟类对象的信息
PrintAgeMoreThan(2, birds, 4);
return 0;
}
```
以上就是针对你提出的问题的回答,希望能够帮到你。
阅读全文