Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7548956
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: C/C++

2011-03-30 15:54:47

  1. /****************************************************
  2. * 文件名:
  3. * 功能:虚基类简单应用
  4. * 说明:声明虚基类之后,虚基类的成员在进一步派生过程中
  5.         和派生类一起维护同一个内存数据拷贝。
  6.         只对紧跟其后的基类起作用
  7. * 时间:2011-3-30 --Lzy
  8. ****************************************************/
  9. #include <iostream.h>

  10. class A
  11. {
  12. protected:
  13.     int a;

  14. public:
  15.     A(){a = 50;}
  16.     void f(){cout<<"A "<<a<<endl;}
  17. };

  18. class B:virtual public A        
  19. {
  20. protected:
  21.     int b;

  22. public:
  23.     B(){b = 60;}
  24.     void f(){cout<<"B "<<b<<","<<a<<endl;}
  25. };

  26. class C:virtual public A        
  27. {
  28. protected:
  29.     int c;

  30. public:
  31.     C(){c = 70;}
  32.     void f(){cout<<"C "<<c<<","<<a<<endl;}
  33. };

  34. class D:public B, public C
  35. {
  36. private:
  37.     int d;
  38. public:
  39.     D(){d = 80;}
  40.     void f()
  41.     {
  42.         a = 30;b = 40; c = 50;
  43.         cout<<"D "<<d<<","<<a<<","<<b<<","<<c<<","<<d<<endl;
  44.     }
  45. };

  46. void main()
  47. {
  48.     D d1;
  49.     d1.f();
  50.     d1.B::f();
  51.     d1.C::f();
  52.     d1.f();

  53. }
阅读(1221) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~