抽象类管理内存
1 /* 内存管理包含类的继承 */
2
3 #include<iostream>
4 #include<vector>
5 using namespace std;
6
7 vector<char*>myv;
8
9 // 管理所有的内存地址 释放所有new 的个数
10 class base
11 {
12 public:
13 static int num;
14 void * operator new (size_t size)
15 {
16 num+=1;
17 char *p = ::new char[size];
18 myv.push_back(p);
19 return p;
20 }
21
22 void * operator delete(void *p)
23 {
24 for(auto i : myv)
25 {
26 if(i==p)
27 {
28 num-=1;
29 ::delete p;
30 // myv.erase(p);
31 break;
32 }
33 }
34 // num-=1;
35 // ::delete p;
36 }
37
38 virtual void print() = 0;// 打印对象个数
39
40 };
41
42 int base::num = 0;
43
44 class X:public base
45 {
46 public:
47 void print()
48 {
49 cout << this->num << endl;
50 }
51 };
52
53
54 class Y:public base
55 {
56 public:
57 void print()
58 {
59 cout << this->num << endl;
60 }
61 };
62
63 void main()
64 {
65 X *p1 = new X;
66 X *p2 = new X;
67 X *p3 = new X;
68
69 delete p3;
70
71
72 Y *p4 = new Y;
73
74 Y *p5 = new Y;
75
76 p2->print();
77
78 cin.get();
79 }
长风破浪会有时,直挂云帆济沧海
posted on 2015-06-10 17:11 Dragon-wuxl 阅读(131) 评论(0) 收藏 举报
浙公网安备 33010602011771号