Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1923958
  • 博文数量: 261
  • 博客积分: 8073
  • 博客等级: 中将
  • 技术积分: 2363
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 15:23
文章分类

全部博文(261)

文章存档

2013年(1)

2012年(1)

2011年(50)

2010年(34)

2009年(4)

2008年(17)

2007年(55)

2006年(99)

分类:

2011-06-16 11:58:02

C++的虚继承主要用于菱形继承:
如附图所示,
如果:

class A {};

class B : public A {};

class C : public A {};

class D : public B, public C {};

那么构造D时,会调用A的构造函数两次,并生成2个A的对象,这样就会产生模糊调用。

 

如何避免上述问题?答曰虚继承!

class B : public virtual A {};

class C : public virtual A {};

这样D类对象中包含的B和C将共享一份A的对象。

构造顺序如下:

1. 构造A;

2. 构造B;

3. 构造C;

4. 构造D;
阅读(597) | 评论(0) | 转发(0) |
0

上一篇:Oracle优化

下一篇:word转chm

给主人留下些什么吧!~~