观察下面一段代码:
class ClassA
{
public:
virtual ~ ClassA(){};
virtual void FunctionA(){};
};
class ClassB
{
public:
virtual void FunctionB(){};
};
class ClassC : public ClassA,public ClassB
{
public:
};
ClassC aObject;
ClassA* pA=&aObject;
ClassB* pB=&aObject;
ClassC* pC=&aObject;
A.pA,pB,pC的取值相同.
B.pC=pA+pB
C.pA和pB不相同
D.pC不等于pA也不等于pB
正确答案: C
答案解析:
注意到题目中class ClassC : public ClassA,public ClassB,即A在前,B在后,所以

本文探讨了C++中多重继承的内存分布问题。通过一道题目解析,指出当一个类ClassC继承自ClassA和ClassB(A在前,B在后),非虚继承的情况下,ClassC的对象内存模型中,ClassA的部分会先于ClassB。因此,指向ClassC的指针pA和pC相同,但pA不等于pB。
最低0.47元/天 解锁文章
880

被折叠的 条评论
为什么被折叠?



