C++中多继承的派生类最开始的位置是第一个基类,其后才是第二三四…个基类。所以派生类对象后面的基类的地址与派生类地址不同,但在将派生类地址赋值给基类指针时会自动转换。
#include <iostream>
using namespace std;
class A
{
public:int a;
};
class B
{
public:int b;
};
class C : public A, public B
{
public:int c;
};
int main()
{
C c;
A *pa=&c;
B *pb=&c;
C *pc=&c;
cout<<pa<<endl<<pb<<endl<<pc<<endl;
return 0;
}
以上代码的某次运行结果为
0x7ffffffedc8c
0x7ffffffedc90
0x7ffffffedc8c