标题:谁能给我分析下虚继承类内存的分布啊
只看楼主
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
结帖率:94.44%
已结贴  问题点数:100 回复次数:9 
谁能给我分析下虚继承类内存的分布啊
#include<iostream>
using namespace std;

class A{};
class B:public virtual A{};
class C:public virtual A{};
class D:public B, public C{};
class E:public virtual B, public virtual C{};
class F:public E, public virtual A, public D{};

int main()
{
    cout << sizeof(A) << endl; //1
    cout << sizeof(B) << endl; //4  vfptrB_A
    cout << sizeof(C) << endl; //4  vfptrC_A
    cout << sizeof(D) << endl; //8  vfptrB_A, vfptrC_A
    cout << sizeof(E) << endl; //8  vfptrE_B, vfptrE_C
    cout << sizeof(F) << endl; //16 vfptrE_B, vfptrE_C,vfptrB_A, vfptrC_A
    return 0;
}
是不是虚继承哪个类,就在类中插入一个指向这个虚继承类的指针啊?? 如果是这样为什么F中没vfptrF_A?
还是我上面的理解根本就是错的啊
哪位能给我详细说说啊?,真的搞的有点晕了
搜索更多相关主题的帖子: 继承 内存 include public 
2012-05-05 15:26
Eilliot
Rank: 6Rank: 6
等 级:侠之大者
帖 子:41
专家分:418
注 册:2012-3-26
得分:13 
嘿嘿,占座围观。
2012-05-05 18:08
ab1034982749
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:215
专家分:1185
注 册:2012-4-14
得分:13 
我也来围观吧
2012-05-05 18:17
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
得分:13 
不懂C++的路过

The tools I recommended:
GUI: CSharp(VS), QT;    Core Code: Plain C (Tiny C Compiler);    Web: Python, JavaScript;    Android: Java;    Embedded System: ASM&C (Linux)
2012-05-05 18:41
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
得分:0 
顶上去等大牛求解
2012-05-05 21:53
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
得分:13 
路过

最基础的往往是你最容易忽略的!
2012-05-05 22:29
渚清沙白
Rank: 3Rank: 3
来 自:湖南财政经济学院
等 级:论坛游侠
帖 子:25
专家分:114
注 册:2012-5-5
得分:13 
晕了,新手路过
2012-05-05 22:57
姚杰
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:169
专家分:477
注 册:2010-6-1
得分:13 
c++ 不太懂 ,如果是java或c 我还可以研究研究........只能围观了

持之以恒,别留遗憾,加油
2012-05-07 12:52
马甲1号
Rank: 5Rank: 5
等 级:职业侠客
帖 子:68
专家分:312
注 册:2011-4-4
得分:13 

去看深入探讨C++对象模型, 学c++必看的

???????
2012-05-07 14:50
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:13 
这个只是知道个大概
虚继承是为了避免 多层派生时 在生成派生类对象时 会产生多个基类对象时采用的
说实话目前我还真没用过这种结构
虚继承应该类似于多态的虚指针一样 采用指针指向基类 ,
也就是说第二层的两个派生类应该各有一个指针指向基类
至于第三层的派生于第二层的类有没有指针呢 这个就不太清楚了,感觉有也可以,没有也可以

还有对于C++标准的支持 不同的编译器是不同的 ,也就是说标准是标准,但是标准是怎么实现的呢,编译器各有自己的方法

关于这些知识 我想你可以在 深度搜索C++面向对象模型 一书中能够找到答案的。
2012-05-07 15:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-367003-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.109973 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved