设计一个Animal(动物)基类,具有纯虚函数makeSound()(发出声音)。从Animal类 派生出Dog(狗)和Cat(猫)类,并实现各自的makeSound()函数。使用多态性,创建一个指向 基类的指针,并在运行时根据实际对象的类型调用相应的makeSound()函数。
时间: 2024-03-10 19:49:39 浏览: 116
好的,这是一个面向对象编程的问题。我可以帮您解决。
首先,我们需要创建Animal类,其中包含一个纯虚函数makeSound(),表示动物可以发出声音。这个类只是一个抽象的概念,不能直接实例化。
```C++
class Animal {
public:
virtual void makeSound() = 0; // 纯虚函数,表示动物可以发出声音
};
```
接下来,我们从Animal类派生出Dog和Cat类。这两个类都需要实现makeSound()函数,以便它们可以根据自己的方式发出声音。
```C++
class Dog : public Animal {
public:
void makeSound() {
std::cout << "汪汪汪~" << std::endl;
}
};
class Cat : public Animal {
public:
void makeSound() {
std::cout << "喵喵喵~" << std::endl;
}
};
```
现在我们可以使用多态性来创建一个指向基类的指针,并根据实际对象的类型调用相应的makeSound()函数。
```C++
int main() {
Animal* animalPtr; // 定义一个指向Animal类的指针
Dog dog; // 创建一个Dog对象
Cat cat; // 创建一个Cat对象
animalPtr = &dog; // 将指针指向Dog对象
animalPtr->makeSound(); // 调用Dog类的makeSound()函数
animalPtr = &cat; // 将指针指向Cat对象
animalPtr->makeSound(); // 调用Cat类的makeSound()函数
return 0;
}
```
以上就是解决这个问题的代码示例。希望对您有所帮助。
阅读全文