codeArt

codeArt

C++的继承

 

 1class base
 2{
 3public:
 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
14class derive : public base
15{
16public:
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
30class derive2 : public derive
31{
32public:
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}
;
45int _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

 

posted on 2010-08-31 01:32 codeArt 阅读(326) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章档案

编程与开源

搜索

最新评论

阅读排行榜

评论排行榜