问题的引出:

一个类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);
}
View Code

相关文章:

  • 2021-06-15
  • 2022-02-15
  • 2022-12-23
  • 2022-12-23
  • 2022-02-21
  • 2021-08-13
  • 2021-07-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-18
  • 2021-09-09
  • 2021-12-31
相关资源
相似解决方案