c++基础-动态关联,设计一个类animal和它的派生类tiger(虎)、sheep(羊),实现虚函数
发布日期:2021-05-08 09:42:05 浏览次数:18 分类:精选文章

本文共 1488 字,大约阅读时间需要 4 分钟。

C++动物类设计与虚函数实现

在本次的项目中,我们将设计一个基类animal,并创建其派生类tigersheep。通过这个例子,我们将学习如何使用虚函数,以及如何实现多态性。


类的设计与成员变量

基类animal中,我们定义了一个成员变量sex,用于表示动物的性别。这个变量将被所有派生类继承并初始化。与此同时,每个动物都需要定义自己的叫声和食物类型,因此我们将在派生类中分别实现这些功能。


派生类实现

1. 虎(Tiger)

派生类tiger继承自animal。在tiger中,我们实现了以下两个虚函数:

  • soar():表示动物的飞翔行为。在tiger中,飞翔时会发出“Ao~~”的声音。
  • eat():表示动物的吃东西行为。在tiger中,它会吃肉。
class tiger : public animal {
public:
virtual void soar() {
cout << "Tiger's soar: Ao~~" << endl;
}
virtual void eat() {
cout << "Tiger eats meat!" << endl;
}
};

2. 羊(Sheep)

派生类sheep同样继承自animal。在sheep中,我们实现了以下两个虚函数:

  • soar():表示动物的飞翔行为。在sheep中,飞翔时会发出“Baa~~”的声音。
  • eat():表示动物的吃东西行为。在sheep中,它会吃草。
class sheep : public animal {
public:
virtual void soar() {
cout << "Sheep's soar: Baa~~" << endl;
}
virtual void eat() {
cout << "Sheep eats grass!" << endl;
}
};

实例化与运行

main函数中,我们创建了四个对象:

  • 两个tiger对象:t1t2
  • 两个sheep对象:s1s2

将这些对象存储在一个指针数组array中。通过循环,我们调用每个对象的eat()soar()方法。

int main() {
tiger t1, t2;
sheep s1, s2;
animal *array[4] = {&s1, &s2, &t1, &t2};
for (int i = 0; i < 4; i++) {
array[i]->eat();
array[i]->soar();
}
return 0;
}

输入与输出

在程序运行时,用户将被提示输入动物的性别。假设所有输入均为“male”,运行结果如下:

Please enter the sex of the animal:
male

输出将包括每个动物的叫声和食物类型:

Tiger's soar: Ao~~
Tiger eats meat!
Sheep's soar: Baa~~
Sheep eats grass!
Tiger's soar: Ao~~
Tiger eats meat!
Sheep's soar: Baa~~
Sheep eats grass!

总结

通过本次练习,我们掌握了如何设计基类与派生类,以及如何实现虚函数和多态性。这种设计方式使得代码具有高度的可扩展性,可以轻松添加新的动物类型。

上一篇:c++基础-c++对c的扩充:const定义常变量,有默认参数的函数
下一篇:c++基础-动态多态性,以car为基类,根据距离单位不同的两个类分别计算汽车运行时间

发表评论

最新留言

不错!
[***.144.177.141]2025年03月26日 19时14分11秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章