定义一个类base,该类含有虚函数display,然后定义他的两个派生类FirstB和Second B,这两个派生类均含有共有成员函数display。在主程序中,定义指向基类Base的指针变量ptr,并分别定义Base、FirstB、SecondB的对象b1、f1、s1,让ptr分别指向b1、f1、s1的起始地址,然后执行这些对象的成员函数display
时间: 2024-01-21 19:17:22 浏览: 190
下面是代码实现:
```c++
#include <iostream>
using namespace std;
class Base {
public:
virtual void display() {
cout << "This is Base class." << endl;
}
};
class FirstB : public Base {
public:
void display() {
cout << "This is FirstB class." << endl;
}
};
class SecondB : public Base {
public:
void display() {
cout << "This is SecondB class." << endl;
}
};
int main() {
Base b1;
FirstB f1;
SecondB s1;
Base* ptr = nullptr;
ptr = &b1;
ptr->display();
ptr = &f1;
ptr->display();
ptr = &s1;
ptr->display();
return 0;
}
```
输出结果为:
```
This is Base class.
This is FirstB class.
This is SecondB class.
```
由于基类中的display函数被声明为虚函数,因此在派生类中定义的同名函数会覆盖基类中的函数,即运行时会根据指针或者引用的实际类型来选择调用哪个版本的display函数。在上述代码中,分别定义了三个对象b1、f1、s1,它们的display函数分别被指向基类Base的指针变量ptr调用。根据实际类型的不同,分别输出了不同的结果。
阅读全文