C++虚继承与普通继承的区别

C++虚继承与普通继承的区别本文探讨了 C 中虚继承与普通继承的区别 重点在于虚继承会导致子类对象包含一个虚类指针 且内存布局和虚函数表有所不同

大家好,欢迎来到IT知识分享网。

虚继承的时候在子类的对象中会多出一个叫虚类指针的大小,有的资料说这个指针指向的内存里面包含了该子类的偏移量和到基类的距离。但是我跟踪过这段内存,发现里面的数据没有规律,也找不到更多的支撑材料,权且先知道子类的对象里面会有这么一个东西吧。

先总结虚拟继承中比较特殊的地方,希望能够对大家有所帮助:

虚继承时子类的虚函数不再是添加到父类部分的虚表中,而在普通的继承中确实直接添加到父类的虚表中,这就意味着如果虚继承中子类父类都有各自的虚函数,在子类里面就会多出一个虚表指针,而普通的继承却不会这样。代码说明:

class B
{

public:
 char b[3];
public:
 virtual void bb()
 {

  cout<<“B”<<endl;
 }
};

class C:public virtual B
{

public:
 char c[3];
public:
 virtual void cc()
 {

  cout<<“C”<<endl;
 }
};

int main()
{

 C c;

 c.c[0]=1;
 c.c[1]=2;
 c.c[3]=3;

 c.b[0]=4;
 c.b[1]=5;
 c.b[2]=6;

 C*ptr=&c;
 void (*PtrFun)();
 int *p,*p2;

 memcpy(&

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/151884.html

(0)
上一篇 2025-03-11 14:33
下一篇 2025-03-11 14:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信