C++的繼承
1
class base
2

{
3
public:
4
base()
{};
5
~base()
{};
6
7
virtual void func1()
{printf("base::func1\r\n");};
8
virtual void func2()
{printf("base::func2\r\n");};
9
int ma;
10
int mb;
11
void member_func()
{printf("base::member_func\r\n");}
12
};
13
14
class derive : public base
15

{
16
public:
17
derive()
{};
18
~derive()
{};
19
20
virtual void func1()
{printf("derive::func1\r\n");};
21
virtual void func3()
{printf("derive::func3\r\n");};
22
virtual void func4()
{printf("derive::func4\r\n");};
23
24
int ma2;
25
int mb2;
26
27
void member_func2()
{printf("derive::member_func2\r\n");}
28
};
29
30
class derive2 : public derive
31

{
32
public:
33
derive2()
{};
34
~derive2()
{};
35
36
virtual void func3()
{printf("derive2::func3\r\n");};
37
virtual void func4()
{printf("derive2::func4\r\n");};
38
virtual void func5()
{printf("derive2::func5\r\n");};
39
40
int ma3;
41
int mb3;
42
43
void member_func3()
{printf("derive2::member_func3\r\n");}
44
};
45
int _tmain(int argc, _TCHAR* argv[])
46

{
47
typedef void (*Fun)(void);
48
49
Fun pfun = 0;
50
derive2* d2 = new derive2;
51
int* p = (int*)d2;
52
*(p+1) = 20;
53
*(p+2) = 30;
54
*(p+3) = 200;
55
*(p+4) = 300;
56
*(p+5) = 2000;
57
*(p+6) = 30000;
58
59
for (int i = 0; i<5; i++)
60
{
61
Fun pfun = (Fun)*((int*)*(p+0)+i);
62
if (pfun)
63
pfun();
64
else
65
printf("null\r\n");
66
}
67
68
base* b2 = new derive;
69
int* p2 = (int*)b2;
70
pfun = (Fun)*((int*)*(p2+0)+3);
71
pfun();
72
73
return 0;
74
}
75
class base2


{3
public:4

base()
{};5

~base()
{};6

7

virtual void func1()
{printf("base::func1\r\n");};8

virtual void func2()
{printf("base::func2\r\n");};9
int ma;10
int mb;11

void member_func()
{printf("base::member_func\r\n");}12
};13

14
class derive : public base15


{16
public:17

derive()
{};18

~derive()
{};19

20

virtual void func1()
{printf("derive::func1\r\n");};21

virtual void func3()
{printf("derive::func3\r\n");};22

virtual void func4()
{printf("derive::func4\r\n");};23

24
int ma2;25
int mb2;26

27

void member_func2()
{printf("derive::member_func2\r\n");}28
};29

30
class derive2 : public derive31


{32
public:33

derive2()
{};34

~derive2()
{};35

36

virtual void func3()
{printf("derive2::func3\r\n");};37

virtual void func4()
{printf("derive2::func4\r\n");};38

virtual void func5()
{printf("derive2::func5\r\n");};39

40
int ma3;41
int mb3;42

43

void member_func3()
{printf("derive2::member_func3\r\n");}44
};45
int _tmain(int argc, _TCHAR* argv[])46


{47
typedef void (*Fun)(void);48

49
Fun pfun = 0;50
derive2* d2 = new derive2;51
int* p = (int*)d2;52
*(p+1) = 20;53
*(p+2) = 30;54
*(p+3) = 200;55
*(p+4) = 300;56
*(p+5) = 2000;57
*(p+6) = 30000;58

59
for (int i = 0; i<5; i++)60

{61
Fun pfun = (Fun)*((int*)*(p+0)+i);62
if (pfun)63
pfun();64
else65
printf("null\r\n");66
}67
68
base* b2 = new derive;69
int* p2 = (int*)b2;70
pfun = (Fun)*((int*)*(p2+0)+3);71
pfun();72
73
return 0;74
}75

posted on 2010-08-31 01:32 codeArt 閱讀(352) 評論(0) 編輯 收藏 引用 所屬分類: C++

