#include<iostream>
using namespace std;
class B
{
public:
B()
{
cout<<"b构造函数"<<endl;
}
public:
int b;
protected:
private:
};
class B1:virtual public B
{
public:
int b1;
protected:
private:
};
class B2:virtual public B
{
public:
int b2;
protected:
private:
};
class C : public B1,public B2
{
public:
int c;
protected:
private:
};
int main01()
{
C c1;
c1.b1 = 100;
c1.b2 = 200;
c1.c = 300;
//c1.b = 500;//继承的二义性 和虚继承的解决方案
system("pause");
return 0;
}
class D1
{
public:
int k;
protected:
private:
};
class D2
{
public:
int k;
protected:
private:
};
class E:public D1,public D2
{
public:
int k;
protected:
private:
};
//多继承始终会出现问题:第一种可以解决,第二种无法解决
int main()
{
E e1;
//e1.k;//Error
e1.D1::k = 100;
e1.D2::k = 200;
cout<<sizeof(B)<<endl;
cout<<sizeof(B1)<<endl;
cout<<sizeof(B2)<<endl;//如果b2不加virtual为8
system("pause");
return 0;
}
多继承原理抛砖
最新推荐文章于 2021-04-14 14:13:26 发布