5.

5.#

 1#include <iostream>
 2#include <string>
 3
 4using namespace std;
 5
 6class A {
 7 public:
 8  A(string s = "A101") : aid(s) {}
 9
10  virtual void out() {
11    cout << "Aid:" << aid << endl;
12  }
13
14 private:
15  string aid;
16};
17
18class B : public A {
19 public:
20  B(string s = "B201") : bid(s) {}
21
22  virtual void out() {
23    A::out();
24    cout << "Bid:" << bid << endl;
25  }
26
27 private:
28  string bid;
29};
30
31class C : public A {
32 public:
33  C(string s = "C301") : A(s) {}
34
35  virtual void out() {
36    A::out();
37    b.out();
38  }
39
40 private:
41  B b;
42};
43
44int main() {
45  A sa("A102");
46  B sb("B202");
47  C sc("C302");
48  A* str[3] = {&sa, &sb, &sc};
49  for (int i = 0; i < 3; i++) {
50    str[i]->out();
51  }
52  return 0;
53}