1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
// // main.cpp // test // // Created by Jacedy on 14-11-6. // Copyright (c) 2014年 Jacedy. All rights reserved. // #include <iostream> using namespace ::std;
//数据类 class CData {
public :
char name[20];
CData( char NAME[])
{
strcpy (name, NAME);
}
void print()
{
printf ( "姓名:%s\n" , name);
}
}; //教师类 class CTeacher : virtual public CData {
public :
int sal;
CTeacher( char NAME[], int SAL) : CData(name) //要先初始化基类!!!
{
strcpy (name, NAME);
sal = SAL;
}
void print()
{
printf ( "姓名:%s, 工资:%d\n" , name, sal);
}
}; //学生类 class CStudent : virtual public CData {
public :
int id;
CStudent( char NAME[], int ID) : CData(name)
{
strcpy (name, NAME);
id = ID;
}
void print()
{
printf ( "姓名:%s, 学号:%d\n" , name , id);
}
}; //研究生类 class CPostgrad : virtual public CStudent {
public :
char dn[40];
CPostgrad( char NAME[], int ID, char DN[]) : CStudent(name, id),CData(name)
{
strcpy (name, NAME);
strcpy (dn, DN);
}
void print()
{
printf ( "姓名:%s, 院系:%s\n" , name, dn);
}
}; //教师中的在职研究生类 class CTpost : public CPostgrad, public CTeacher {
public :
CTpost( char NAME[], int ID, char DN[], int SAL) : CPostgrad(name, id, dn),CTeacher(name, sal),CStudent(name, id),CData(name)
{
strcpy (name, NAME);
sal = SAL;
strcpy (dn, DN);
}
void print()
{
printf ( "姓名:%s, 工资:%d, 院系:%s\n" , name, sal, dn);
}
}; int main( void )
{ CData A( "A" );
A.print();
CTeacher B( "B" , 10000);
B.print();
CStudent C( "C" , 12);
C.print();
CPostgrad D( "D" , 18, "计算机学院" );
D.print();
CTpost E( "E" , 22, "计算机学院" , 20000);
E.print();
return 0;
} |
C++多重继承的实现
最新推荐文章于 2025-03-30 20:11:09 发布
