C++对象布局及多态实现探索之虚继承.docVIP

  • 2
  • 0
  • 约2.74千字
  • 约 5页
  • 2018-05-25 发布于河南
  • 举报

C++对象布局及多态实现探索之虚继承.doc

C对象布局及多态实现探索之虚继承

C++对象布局及多态实现探索之虚继承 作者:浩瀚天涯 来源: 发布时间:07-04-29 浏览: 10651 次 下面我们来看虚继承。首先看看这c020类,它从c010虚继承:} struct c010 {  c010() : c_(0x01) {}  void foo() { c_ = 0x02; }  char c_; }; struct c020 : public virtual c010 {  c020() : c_(0x02) {}  char c_; };   运行如下代码,查看对象的内存布局: print_size_detail(c020)   结果为: the size of c020 is 6 the detail of c020 is c0 c2 45 00 02 01   很明显对象的起始处是一个指针,然后是子类的成员变量,接下来是父类的成员变量。和以前的讨论不同的是由于使用了虚继承,父类的成员变量被放到了最后面。   运行如下的代码: c020 c020; c020.c010::c_ = 0x04;   由于子类中的变量和父类中的变量重名,所以我们必须用这种方式来访问属于父类的成员变量,普通情况下??需要这种写法。我们看看后面这行代码对应的汇编代码: 0042387e mov eax,dword ptr [ebp+fffff82ch] 004

文档评论(0)

1亿VIP精品文档

相关文档