如何在main函数中测试多态效果
时间: 2023-05-28 13:08:02 浏览: 57
要测试多态效果,需要创建多个继承自同一个基类的子类对象,并将它们赋值给同一个基类指针或引用,然后调用基类的虚函数。
以下是一个示例代码:
```c++
#include <iostream>
using namespace std;
class Animal {
public:
virtual void speak() {
cout << "Animal speaks." << endl;
}
};
class Cat : public Animal {
public:
void speak() {
cout << "Meow." << endl;
}
};
class Dog : public Animal {
public:
void speak() {
cout << "Woof." << endl;
}
};
int main() {
Animal* ptr = new Animal();
ptr->speak();
ptr = new Cat();
ptr->speak();
ptr = new Dog();
ptr->speak();
return 0;
}
```
在这个示例代码中,Animal是基类,Cat和Dog是继承自Animal的子类。在main函数中,我们创建了一个Animal类型的指针ptr,并依次将它赋值为Animal、Cat和Dog的对象指针,并调用了它们的speak()函数。
由于speak()是虚函数,它会根据指针所指向的对象类型来调用对应的函数。因此,当ptr指向Animal对象时,输出的是"Animal speaks.",当ptr指向Cat对象时,输出的是"Meow.",当ptr指向Dog对象时,输出的是"Woof.",这就展示了多态的效果。