问题的引出:
一个类D继承自两个类B1,B2,而B1,B2都继承与基类B
#include<iostream> using namespace std; class B { public: int ib; char cb; public: B():ib(0),cb('B') { printf("B found\n"); } virtual void f() { cout << "B::f()" << endl;} virtual void Bf() { cout << "B::Bf()" << endl;} }; class B1 : public B { public: int ib1; char cb1; public: B1():ib1(11),cb1('1') { printf("B1 found\n"); } virtual void f() { cout << "B1::f()" << endl;} virtual void f1() { cout << "B1::f1()" << endl;} virtual void Bf1() { cout << "B1::Bf1()" << endl;} }; class B2: public B { public: int ib2; char cb2; public: B2():ib2(12),cb2('2') { printf("B2 found\n"); } virtual void f() { cout << "B2::f()" << endl;} virtual void f2() { cout << "B2::f2()" << endl;} virtual void Bf2() { cout << "B2::Bf2()" << endl;} }; class D : public B1, public B2 { public: int id; char cd; public: D():id(100),cd('D') { printf("D found\n"); } virtual void f() { cout << "D::f()" << endl;} virtual void f1() { cout << "D::f1()" << endl;} virtual void f2() { cout << "D::f2()" << endl;} virtual void Df() { cout << "D::Df()" << endl;} }; int main(void) { D* d = new D; //d->ib=111;由于二义性 这样会有问题 //printf("%d\n",d->ib); d->B1::ib=222; //printf("%d\n",d->ib); d->B2::ib=333; //printf("%d\n",d->ib); }