用c++编写程序:设计一个类族,在子类中定义与父类相同的函数,用不同类的对象进行 函数的调用。 注:参考第12章“多态性”小节中的内容进行设计,可自定义程序所实现的功 能,仅需满足父类与子类中具有相同函数,在主函数中用不同对象调用函数即可。
时间: 2024-03-10 17:47:25 浏览: 90
好的,以下是一个简单的示例程序:
```c++
#include <iostream>
using namespace std;
class Animal {
public:
virtual void speak() { // 父类中的虚函数
cout << "动物发出了叫声!" << endl;
}
};
class Cat : public Animal {
public:
virtual void speak() { // 子类中的同名虚函数
cout << "喵~喵~喵~" << endl;
}
};
class Dog : public Animal {
public:
virtual void speak() { // 子类中的同名虚函数
cout << "汪!汪!汪!" << endl;
}
};
int main() {
Animal *ptr1 = new Animal();
Animal *ptr2 = new Cat();
Animal *ptr3 = new Dog();
ptr1->speak(); // 动物发出了叫声!
ptr2->speak(); // 喵~喵~喵~
ptr3->speak(); // 汪!汪!汪!
delete ptr1;
delete ptr2;
delete ptr3;
return 0;
}
```
在这个程序中,我们定义了一个 `Animal` 类作为父类,其中有一个 `virtual` 关键字修饰的虚函数 `speak()`。然后,我们又分别定义了 `Cat` 和 `Dog` 类作为 `Animal` 类的子类,并在这两个子类中重新定义了同名的虚函数 `speak()`。最后,在主函数中,我们分别创建了 `Animal`、`Cat` 和 `Dog` 类的对象,并使用它们调用了 `speak()` 函数。
由于 `speak()` 函数是虚函数,因此会根据对象的真实类型来调用相应的函数。因此,在调用 `ptr2->speak()` 和 `ptr3->speak()` 时,会分别调用 `Cat` 和 `Dog` 类中的 `speak()` 函数,而不是 `Animal` 类中的那个。这就实现了多态性。
阅读全文