继承构造析构顺序以及原理以及重名变量函数
1 /* 继承的内存原理 */
2
3 /* 继承 */
4
5 #include<iostream>
6
7 using namespace std;
8
9
10 class ye
11 {
12 public:
13 int a = 11;
14 int b;
15
16 void print()
17 {
18 cout << typeid(*this).name() << "a = " << a << endl;
19 }
20
21 ye()
22 {
23 cout << "ye来了" << endl;
24 }
25
26 ~ye()
27 {
28 cout << "ye走了" << endl;
29 }
30 };
31
32 class die : public ye
33 {
34 public:
35 int a = 22;
36 int c;
37
38 void print()
39 {
40 cout << typeid(*this).name() << "a = " << a << endl;
41 }
42
43 die()
44 {
45 cout << "die来了" << endl;
46 }
47
48 ~die()
49 {
50 cout << "die走了" << endl;
51 }
52
53 };
54
55 void main()
56 {
57 ye ye1;
58 ye1.a = 120;
59 ye1.print();
60 //-----------------
61
62 die die1;
63 die1.a = 109;
64 die1.print();
65
66 //-----------------
67 die die1;
68 die1.print();
69 //-----------------
70
71 die die1;
72
73 cout << die1.a << endl;// 子类会覆盖父类
74
75 cout << die1.ye::a << endl;// 访问父类
76
77 die1.print();// 子类会覆盖父类
78
79 die1.ye::print();// 访问父类 需要访问子类中的父类拷贝
80
81 cin.get();
82 }
83
84 class er : public die
85 {
86 public:
87 er()
88 {
89 cout << "er走了" << endl;
90 }
91
92 ~er()
93 {
94 cout << "er走了" << endl;
95 }
96 };
97
98 // ------------------------------------------------------------------
99
100 // 子类依赖于父类 父类不依赖于子类
101
102 // 构造的时候 如果先实现子类,子类依赖父类 出错,先构造父类 构造子类
103
104 // 析构的时候 如果先销毁父类 子类依赖于父类 在销毁子类出错 先销毁子类再销毁父类
105
106
107
108 void main()
109 {
110
111 die *pdie = new die;
112 delete pdie;
113
114 cin.get();
115 }
长风破浪会有时,直挂云帆济沧海
posted on 2015-06-08 21:31 Dragon-wuxl 阅读(163) 评论(0) 收藏 举报
浙公网安备 33010602011771号