首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>C/C++>C++>C++语言中多重继承下的虚函数调用
C++语言中多重继承下的虚函数调用
来源: 发布时间:2008-05-04 发布人: 浏览: 人次   字体: [ ]  

C++中虚函数调用采用所谓的虚函数表(vtable)实现,对于简单的单继承,其实现如下图所示:
(其中ClassA为ClassB的基类,详见深入浅出MFC P68)
对于这种情况,显然可以想到,vtable直接定位到对象的函数即可


你也许会想到:C++支持多继承,在多继承的情况下,vatble以及内存布局该如何实现?
以下也许就是你想要的答案

代码:C继承于A和B,运行环境VC6.0

class A
{
public:
    
int a, b;
    
virtual void show();
}
;

class B
{
public:
    
int a, b;
    
virtual void show();
}
;

class C:public A,public B
{
public:
    
int a, b;
    
virtual void show();
}
;

void A::show(){}
void B::show(){}
void C::show(){    cout<<"c.a="<<a<<",   c.b="<<b<<endl;}

int main()
{
    cout
<<"a.size="<<sizeof(A)<<endl;
    cout
<<"b.size="<<sizeof(B)<<endl;
    cout
<<"c.size="<<sizeof(C)<<endl;

    A a;
    B b;
    C c;

    a.a
=1;
    a.b
=2;
    b.a
=3;
    b.b
=4;
    c.a
=5;
    c.b
=6;

    cout
<<"a="<<&a<<endl;
    cout
<<"b="<<&b<<endl;
    cout
<<"c="<<&c<<endl;

    A
* pa;
    B
* pb;
    pa 
= &c;
    pb 
= &c;

    cout
<<"pa="<<pa<<endl;
    cout
<<"pb="<<pb<<endl;
    
    pa
->show();
    pb
->show();

    
int *p=(int *)&c;
  
    
while((int)p <= (int)&a.b)
    
{
        cout
<<p<<"   "<<*p<<endl;
        p
++;
    }


    
return 0;
}

程序输出:



共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·c++获取Windows 2000/XP操作系统的安...
·实例讲解C++中CopyFileEx函数的简单...
·VC++编写交互程序时将打印结果输出到...
·C++中regex库中静态正则表达式库的好...
·c++实现获取IE缓存文件夹中的文件路...
·如何在C++中创建持久对象的方法
·如何在C++中将数据库数据分行和列保...
·C++实现RGB和HSL颜色转换代码实例
·如何在C++语言中对浮点数进行格式化...
·对比C++中sizeof与strlen函数的区别
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·如何在C++中创建持久对象的方
·c++实现获取IE缓存文件夹中的
·C++中regex库中静态正则表达...
·VC++编写交互程序时将打印结...
·实例讲解C++中CopyFileEx函数
·c++获取Windows 2000/XP操作...
·什么是单例模式?C++中单例模...
·基于C++的DES加密算法实现代...
·vc命令行调用winrar.exe进行...
·C++计算含括号四则表达式的模
·C++程序中内存划分介绍
·vc读取XML文件中的文本代码
·祥解C++中的this指针
·在Linux下验证日期是否合法
·C++实现仿Office风格的颜色选
热 门 文 章
·基于C++的DES加密算法实现代...
·实例详细介绍各种字符集编码...
·vc读取XML文件中的文本代码
·祥解C++中的this指针
·vc命令行调用winrar.exe进行...
·C++中regex库中静态正则表达...
·C语言程序设计入门学习六步曲...
·VC++编写交互程序时将打印结...
·实例讲解C++中CopyFileEx函数...
·C++实现RGB和HSL颜色转换代码...
·C++不是万能的
·c++实现获取IE缓存文件夹中的...
·什么是单例模式?C++中单例模...
·谈谈对C和C++中include指令的...
·C++程序中内存划分介绍
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .