虚拟基类

1 #include <iostream>
      2 using namespace std;
      3 class B
      4 {
      5 protected:
      6     int b;
      7 public:
      8     B(int bval =0)
      9     {
     10         b = bval;
     11         cout<<"I'm B,Myint is"<<b<<endl;
     12     }
     13 };
     14
     15 class D1:virtual public B
     16 {
     17 protected:
     18     int d1;
     19 public:
     20     D1(int bval,int dval);
     21 };
     22 D1::D1(int bval,int dval):B(bval)
     23 {
     24     d1 = dval;
     25     cout<<"I'm D1,Myint is"<<d1<<"My Base class int is"<<b<<endl;
     26 }
     27
     28 class D2:virtual public B
     29 {
     30 protected:
     31     int d2;
     32 public:
     33     D2(int bval,int dval);
     34 };
     35 D2::D2(int bval,int dval):B(bval)
     36 {
     37     d2 = dval;
     38     cout<<"I'm D2,MyBase int is"<<b<<"MY int is"<<d2<<endl;
     39 }
     40
     41 class D3:public D1,public D2
     42 {
     43 protected:
     44     int d3;
     45 public:
     46     D3(int bval,int dval1,int dval2,int dval3);
     47 };
     48 D3::D3(int bval,int dval1,int dval2,int dval3):
     49     D1(bval,dval1),D2(bval,dval2),
     50     B(bval)
     51 {
     52     d3 = dval3;
     53     cout<<"I'm D3,MyBase int is"<<b
     54         <<"MYd2 int is"<<d2
     55         <<"My d1 int is"<<d1
     56         <<"Mying is"<<d3<<endl;
     57 }
     58 int main()
     59 {
     60     B b(1);
     61    cout<<"Test/***********************************************************/"<<endl;
     62     D1 d1(10,100);
     63    cout<<"Test/***********************************************************/"<<endl;
     64     D2 d2(20,200);
     65    cout<<"Test/***********************************************************/"<<endl;
     66     D3 d3(9,11,22,33);
     67     return 0;
     68 }

 运行结果:
[root@localhost dynamicBinding]# ./a.out
I'm B,Myint is1
Test/***********************************************************/
I'm B,Myint is10
I'm D1,Myint is100My Base class int is10
Test/***********************************************************/
I'm B,Myint is20
I'm D2,MyBase int is20MY int is200
Test/***********************************************************/
I'm B,Myint is9
I'm D1,Myint is11My Base class int is9
I'm D2,MyBase int is9MY int is22
I'm D3,MyBase int is9MYd2 int is22My d1 int is11Mying is33


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值