/**
菱形继承 与 虚拟继承
*/
class SWYA
{
public:
SWYA() :a(0) { cout << "construct A\n"; }
~SWYA() { cout << "deconstruct A\n"; }
public:
virtual void fun() { cout << "fun\n"; }
public:
int a;
};
class SWYB :public /*virtual*/ SWYA
{
public:
SWYB() { cout << "construct B\n"; }
~SWYB() { cout << "deconstruct B\n"; }
};
class SWYC :public /*virtual*/ SWYA
{
public:
SWYC() { cout << "construct C\n"; }
~SWYC() { cout << "deconstruct C\n"; }
};
class SWYD :public SWYB, public SWYC
{
public:
SWYD() { cout << "construct D\n"; }
~SWYD() { cout << "deconstruct D\n"; }
};
/**
菱形继承 与 虚拟继承
*/
int main()
{
SWYD* d = new SWYD();
d->SWYA::a = 1;
d->SWYB::a = 2;
d->SWYC::a = 3;
//d->a = 4;
//d->fun();
//d->a = 5;
//d->a = 6;
1 == 0;
delete d;
}