如何用C++语言实现上面的题目?
时间: 2024-11-09 15:30:28 浏览: 17
在C++中实现多态通常涉及到两个关键概念:继承和虚函数。下面是一个简单的例子,展示如何通过基类和派生类实现多态:
```cpp
// 假设有一个基类 Animal
class Animal {
public:
virtual void makeSound() {
cout << "Animal makes a sound." << endl;
}
};
// 派生出具体的动物类,比如Dog 和 Cat
class Dog : public Animal {
public:
void makeSound() override {
cout << "Dog barks." << endl;
}
};
class Cat : public Animal {
public:
void makeSound() override {
cout << "Cat meows." << endl;
}
};
int main() {
// 创建 Animal 类型的对象数组
Animal* animalSounds[2] = {new Dog(), new Cat()};
// 使用 Animal 的指针,可以调用各自的 makeSound 函数,体现多态性
for (int i = 0; i < 2; i++) {
animalSounds[i]->makeSound();
}
// 注意手动释放动态分配的内存
delete animalSounds[0];
delete animalSounds[1];
return 0;
}
```
在这个例子中,`makeSound()`函数在基类中声明为虚函数,使得派生类可以根据实际类型覆盖它的行为。在 `main()` 中,我们创建了Animal类型的指针数组,并指向Dog和Cat实例。当我们调用这些指针的`makeSound()`时,会执行相应派生类的实际实现。
阅读全文