#include <iostream>
class A
{
public:
int a;
A():a(10){ std::cout << "A constructor" << std::endl; }
void f()
{
std::cout << "A::f" << std::endl;
}
};
class B: virtual public A
{
public:
int b;
B():b(20){ std::cout << "B constructor" << std::endl; }
void f()
{
std::cout << "B::f" << std::endl;
}
};
class C: virtual public A
{
public:
int c;
C():c(30){ std::cout << "C constructor" << std::endl; }
void f()
{
std::cout << "C::f" << std::endl;
}
};
class D: public B , public C
{
public:
int d;
D():d(10){ std::cout << "D constructor" << std::endl; }
void f()
{
std::cout << "D::f" << std::endl;
}
};
typedef void(*Fun)(void);
int main()
{
D* pd = new D;
A* pa = pd;
B* pb = pd;
C* pc = pd;
std::cout << "========================" << std::endl;
std::cout << &pd->a << std::endl;
std::cout << &pd->b << std::endl;
std::cout << &pd->c << std::endl;
std::cout << &pd->d << std::endl;
std::cout << "========================" << std::endl;
std::cout << pa << std::endl;
std::cout << pb << std::endl;
std::cout << pc << std::endl;
std::cout << pd << std::endl;
system("pause");
return 0;
}
虚继承下的多重继承内存布局
最新推荐文章于 2024-04-07 18:25:33 发布