一到关于c++继承和多态的题
1
class base
2
{
3
public:
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
}
33
protected:
34
int val;
35
};
36
37
class deiver:public base
38
{
39
public:
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
};
69
void des(base * b)
70
{
71
b->print();
72
b->relase();
73
}
74
deiver de = 98765;
75
int main()
76
{
77
deiver * dee = new deiver;
78
*(base *)dee = 100;
79
des(dee);
80
delete dee;
81
return 0;
82
}
83
84
class base2
{3
public: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
}33
protected:34
int val;35
};36

37
class deiver:public base38
{39
public: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
};69
void des(base * b)70
{71
b->print();72
b->relase();73
}74
deiver de = 98765;75
int main()76
{77
deiver * dee = new deiver;78
*(base *)dee = 100;79
des(dee);80
delete dee;81
return 0;82
}83

84




浙公网安备 33010602011771号