1class base
2{
3public:
4 base()
5 {
6 cout <<" base::val "<<endl;
7 val = 12345;
8 print();
9 }
10 base(int x)
11 {
12 val = x;
13 cout << " "<<endl;
14 }
15 virtual void print()
16 {
17 cout << " base:print(), val = "<<val<<endl;
18 }
19 base & operator = (int x)
20 {
21 val = x;
22 cout <<" base::operator, val = "<<x<<endl;
23 return *this;
24 }
25 void relase()
26 {
27 cout << " base::relase" <<endl;
28 }
29 ~base()
30 {
31 cout << " ~base::val = "<< val <<endl;
32 }
33protected:
34 int val;
35};
36
37class deiver:public base
38{
39public:
40 deiver()
41 {
42 cout << " deiver::val "<<endl;
43 }
44
45 deiver(int x)
46 {
47 val = x;
48 print();
49 }
50 void print()
51 {
52 cout << " deiver::print(), val = "<< val <<endl;
53 }
54 void relase()
55 {
56 cout << " deiver::relase, val = "<<val<<endl;
57 }
58 deiver & operator = (int x)
59 {
60 val = x;
61 cout <<" deiver::operator, val = "<<x<<endl;
62 return *this;
63 }
64 ~deiver()
65 {
66 cout << " deiver::~deiver "<<endl;
67 }
68};
69void des(base * b)
70{
71 b->print();
72 b->relase();
73}
74deiver de = 98765;
75int main()
76{
77 deiver * dee = new deiver;
78 *(base *)dee = 100;
79 des(dee);
80 delete dee;
81 return 0;
82}
83
84
2{
3public:
4 base()
5 {
6 cout <<" base::val "<<endl;
7 val = 12345;
8 print();
9 }
10 base(int x)
11 {
12 val = x;
13 cout << " "<<endl;
14 }
15 virtual void print()
16 {
17 cout << " base:print(), val = "<<val<<endl;
18 }
19 base & operator = (int x)
20 {
21 val = x;
22 cout <<" base::operator, val = "<<x<<endl;
23 return *this;
24 }
25 void relase()
26 {
27 cout << " base::relase" <<endl;
28 }
29 ~base()
30 {
31 cout << " ~base::val = "<< val <<endl;
32 }
33protected:
34 int val;
35};
36
37class deiver:public base
38{
39public:
40 deiver()
41 {
42 cout << " deiver::val "<<endl;
43 }
44
45 deiver(int x)
46 {
47 val = x;
48 print();
49 }
50 void print()
51 {
52 cout << " deiver::print(), val = "<< val <<endl;
53 }
54 void relase()
55 {
56 cout << " deiver::relase, val = "<<val<<endl;
57 }
58 deiver & operator = (int x)
59 {
60 val = x;
61 cout <<" deiver::operator, val = "<<x<<endl;
62 return *this;
63 }
64 ~deiver()
65 {
66 cout << " deiver::~deiver "<<endl;
67 }
68};
69void des(base * b)
70{
71 b->print();
72 b->relase();
73}
74deiver de = 98765;
75int main()
76{
77 deiver * dee = new deiver;
78 *(base *)dee = 100;
79 des(dee);
80 delete dee;
81 return 0;
82}
83
84