1 #include <string>
2
3 using namespace std;
4
5 struct Sres
6 {
7 string content;
8 int value;
9 };
10
11 class BaseABC
12 {
13 public:
14 BaseABC(string name = "base"):
15 name(name)
16 { }
17 BaseABC()
18 { }
19 ~BaseABC()
20 { }
21 string name;
22 virtual Sres Skill() const = 0;
23 };
24
25 class My:public BaseABC
26 {
27 public:
28 My(string name) :
29 BaseABC(name)
30 {
31
32 }
33 virtual Sres Skill() const;
34 };
35 Sres My::Skill() const
36 {
37 return {"my",100};
38 }
39
40 class Son :public BaseABC
41 {
42 public:
43 Son(string name) :
44 BaseABC(name)
45 {
46
47 }
48 virtual Sres Skill() const;
49 };
50 Sres Son::Skill() const
51 {
52 return { "son", 80 };
53 }
54
55 void Show(const BaseABC& abc)
56 {
57 auto tmp = abc.Skill();
58 cout << abc.name << ":" << tmp.content + " " << tmp.value << endl;
59 }
60
61 int main()
62 {
63 My aa(string("cxl"));
64 Son bb(string("son"));
65 Show(aa);
66 Show(bb);
67 }