2.编写IAnimal抽象类,包含一个公有shout ()的纯虚函数。从该抽象类派生出cat、 Dog类,并通过实现shout()纯虚函数分别打印出cat(喵喵喵)与dog(汪汪汪)的叫声用c++
时间: 2024-09-13 21:07:55 浏览: 32
在C++中,可以使用抽象类和纯虚函数来实现多态。首先,我们定义一个名为`IAnimal`的抽象类,并在其中声明一个公有的纯虚函数`shout()`。然后,我们从这个抽象类派生出`Cat`和`Dog`类,并在各自类中实现`shout()`函数,使得当调用这个函数时,它们分别打印出自己的叫声。
下面是具体的实现代码:
```cpp
#include <iostream>
// 定义IAnimal抽象类
class IAnimal {
public:
// 纯虚函数声明
virtual void shout() const = 0;
// 析构函数需要声明为虚函数,以支持多态
virtual ~IAnimal() {}
};
// 从IAnimal派生Cat类
class Cat : public IAnimal {
public:
// 实现shout函数
void shout() const override {
std::cout << "cat(喵喵喵)" << std::endl;
}
};
// 从IAnimal派生Dog类
class Dog : public IAnimal {
public:
// 实现shout函数
void shout() const override {
std::cout << "dog(汪汪汪)" << std::endl;
}
};
// 用于测试多态的函数
void testAnimalShout(IAnimal* animal) {
animal->shout();
}
int main() {
// 创建Cat和Dog对象
Cat cat;
Dog dog;
// 通过指针调用shout函数,测试多态
testAnimalShout(&cat); // 应该打印 "cat(喵喵喵)"
testAnimalShout(&dog); // 应该打印 "dog(汪汪汪)"
return 0;
}
```
在上述代码中,`testAnimalShout`函数接受一个指向`IAnimal`的指针,它可以是一个`Cat`对象或`Dog`对象的指针。通过这种方式,我们可以使用同一个函数来调用不同对象的`shout`方法,展示了多态的特性。