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
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