0
以下哪段代码中的哪条语句正确,为什么?指向派生类对象的基指针的值
class ClassA
{
public:
virtual ~ ClassA(){};
virtual void FunctionA(){};
};
class ClassB
{
public:
virtual void FunctionB(){};
};
class ClassC : public ClassA,public ClassB
{
public:
};
int main(){
ClassC aObject;
ClassA* pA=&aObject;
ClassB* pB=&aObject;
ClassC* pC=&aObject;
return 0;
}
- 的
pA
,pB
和pC
的值是相同的; pC = pA + pB;
pA
与pB不同;pA
和pB
都不等于pC
;
任何人都可以在基类指针指向派生对象的现象下解释真实的故事吗?不是简单地存储派生类对象的起始地址?
我刚刚讲过Effective C++,它在第27条中说过'这里我们只是创建一个基类指向派生类对象的指针,但有时候,这两个指针值将不会相同。当出现这种情况时,运行时会将偏移量应用于Derived *指针以获取正确的Base *指针值。 – qingjinlyc 2014-09-11 02:54:56
3总是如此。 2和4也可以是真实的,这取决于你的编译器。没有单一的答案。 – EJP 2014-09-11 03:10:42