父类与子类指针的问题
1 /* 父类与子类指针的问题 */
2
3
4 #include<iostream>
5
6 using namespace std;
7
8 class ye
9 {
10 public:
11 ye()
12 {
13 this->p = new int[25*1024*1024]
14 cout << "ye create" << endl;
15 }
16
17 ~ye()
18 {
19 cout << "ye delete" << endl;
20 delete []p;
21 }
22
23 void yeye()
24 {
25 cout << "我是你爹" << endl;
26 }
27
28 void print()
29 {
30 cout << typeid(*this).name() << endl;
31 cout << sizeof(*this) << endl;
32 }
33
34 int *p;
35 };
36
37
38
39 class die : public ye
40 {
41 public:
42 die()
43 {
44 this->p = new double[25*1024*1024]// int 4字节 4*25=100 * 1024 *1024 = 100M
45 cout << "die create" << endl;
46 }
47
48 ~die()
49 {
50 cout << "die delete" << endl;
51 delete []p;
52 }
53
54 void diedie()
55 {
56 cout << "我是你儿子" << endl;
57 }
58
59 void print()
60 {
61 cout << typeid(*this).name() << endl;
62 cout << sizeof(*this) << endl;
63 }
64
65 private:
66 double *p;
67 };
68
69 /*
70 父类指针引用父类对象,完全正常引用
71 子类指针引用子类对象,子类会覆盖父类的同名函数 覆盖同名变量
72 父类指针引用子类对象,只能访问子类对象中包含的父类对象,父类对象的函数成员可以访问,子类的不可以访问,无法正常释放内存
73 子类指针引用父类对象,不可以,会出现野指针内存冲突
74 */
75 void main()
76 {
77 // ye *p = new ye; 100M
78
79 // die *p = new die;// 300M
80 //---------------------------------------
81 // 父类指针引用父类对象
82 ye *p = new ye;
83 p->yeye();
84 p->print();
85 cout << (void *)p->p << endl;
86 delete p;
87 //---------------------------------------
88 // 子类指针引用子类对象
89 die *p = new die;
90 p->diedie();
91 p->print();
92 p->ye::print();
93
94 cout<< (void *)p->p << endl;
95 cout << (void *)p->ye::p << endl;
96 delete p;
97 //---------------------------------------
98 //父类指针引用子类对象
99 ye *p = new die;//父类指针存储子类对象,不需要转换
100 p->print();
101 p->diedie();// 不可以访问
102 delete p;
103
104 //---------------------------------------
105 // 子类指针引用父类对象
106 die *p =static_cast<die*>(new ye);// 子类对象指针必须强制转换
107 p->print();// 函数区是共享的,空指针可以访问不引用成员变量的函数
108 cout<< (void *)p->p << endl;// 没有初始化的野指针
109 //delete p->p;// 崩溃
110 p->ye::print();// 访问父类对象可以通过指针->父类::方法或者成员
111 p->yeye();
112 //delete p;// 出现野指针释放内存失败 会崩溃
113
114
115 cin.get();
116 }
长风破浪会有时,直挂云帆济沧海
posted on 2015-06-09 19:08 Dragon-wuxl 阅读(145) 评论(0) 收藏 举报
浙公网安备 33010602011771号