#include "iostream"
using namespace std;
class A1
{//基类1
public:
int m_a=10;
};
class A2
{//基类2
public:
int m_a=20;
};
class B1:public A1,public A2
{//派生类
public:
int m_a=30;
};
class A
{
public:
int m_a=10;
};
class B:virtual public A{};
class C:virtual public A{};
class D:public B,public C{};
int main()
{
B1 b;
cout<<"m_a的值为:"<<b.m_a<<",m_b的值为:"<<b.A1::m_a<< ",m_c的为:"<<b.A2::m_a<<endl;
//菱形的继承方式要加virtual,两个变量就变成了一个变量.
D d;
d.B::m_a=30;
d.C::m_a=80;
cout<<"B::m_a的地址是:"<<&d.B::m_a<<",值是:"<<d.B::m_a<<endl;
cout<<"C::m_a的地址是:"<<&d.C::m_a<<",值是:"<<d.B::m_a<<endl;
}
输出:
m_a的值为:30,m_b的值为:10,m_c的为:20
B::m_a的地址是:0x737c7ff6f0,值是:80
C::m_a的地址是:0x737c7ff6f0,值是:80
发表回复