#include<iostream> using namespace std; class B { public: B() { cout << "b" << endl; } virtual void Display(void) { cout << "B" << endl; } private: int m_nColor; }; class D1 : public B { public: D1() { cout << "d1" << endl; } void Display(void) { cout << "D1" << endl; } }; class D2 : public B { D2() { cout << "d2" << endl; } void Display(void) { cout << "D2" << endl; } }; class D3 :public B { public: D3() { cout << "d3" << endl; } void Display(void) { cout << "D3" << endl; } }; void main() { B b; D1 d1; D2 d2; D3 d3; B * bb[3] = { &d1,&d2, &d3 }; for (int i = 0; i < 3; i++) { bb[i]->Display(); } }
时间: 2024-04-26 18:20:37 浏览: 112
#include <iostream>
这段代码是一个简单的多态示例,定义了一个基类 B 和三个派生类 D1、D2、D3。其中基类 B 定义了一个虚函数 Display(),并且派生类 D1、D2、D3 分别实现了该虚函数。在 main() 函数中,分别创建了对象 b、d1、d2、d3,并且将 d1、d2、d3 的地址存储在一个 B 类型的指针数组 bb 中,然后通过循环调用 bb 中每个元素的 Display() 函数,实现了多态的效果。虽然 bb 中存储的是派生类的指针,但是通过基类的指针调用虚函数,会根据具体的对象类型调用相应的虚函数。因此,最终的输出结果是:
b
b
b
D1
D2
D3
其中,第一行输出的是创建对象 b 时输出的 "b"。接下来的三行输出的是通过 bb 指针数组调用基类 B 的虚函数 Display() 时输出的 "B"。最后的三行分别输出的是通过 bb 指针数组调用派生类 D1、D2、D3 的虚函数 Display() 时输出的 "D1"、"D2"、"D3"。
阅读全文