帮忙看一下这道C++的题,要是能详细解释,举一反三就更好 了

5.观察下面一段代码:classClassA{public:virtual~ClassA(){};virtualvoidFunctionA(){};};classClas... 5.观察下面一段代码:

class ClassA

{

public:

virtual ~ ClassA(){};

virtual void FunctionA(){};

};

class ClassB

{

public:

virtual voidFunctionB(){};

};

class ClassC : public ClassA,public ClassB

{

public:

};

ClassC aObject;

ClassA* pA=&aObject;

ClassB* pB=&aObject;

ClassC* pC=&aObject;

关于pA,pB,pC的取值,下面的描述中正确的是:

A.pA,pB,pC的取值相同. B.pC=pA+pB

C.pA和pB不相同 D.pC不等于pA也不等于pB
展开
 我来答
阿苏二号
2012-04-06 · TA获得超过107个赞
知道答主
回答量:45
采纳率:0%
帮助的人:40.3万
展开全部
楼上答的都不对
实际运行一下,选C,
因为
ClassA* pA=&aObject;
ClassB* pB=&aObject;
ClassC* pC=&aObject;
这三行代码实际等价于:
ClassA* pA=static_cast<ClassA*>(&aObject);
ClassB* pB=static_cast<ClassB*>(&aObject);
ClassC* pC=&aObject;
存在隐式转换的,也就是说源代码等号右边虽然写法都一样,但编译器的解释是不一样的.
Eli2021
2012-03-21 · TA获得超过664个赞
知道小有建树答主
回答量:1266
采纳率:72%
帮助的人:330万
展开全部
A.pA,pB,pC的取值相同

aObject是一个客观存在的对象,该对象的首地址是唯一的,确定的。无论你把这个地址赋值给哪一个指针变量,地址就是地址,指向是一样的。多态只是发生在通过基类指针或引用调用虚函数的情况。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
盏迭起挂啥bO0e6
2012-03-21 · TA获得超过308个赞
知道小有建树答主
回答量:283
采纳率:100%
帮助的人:178万
展开全部
同上,
补充的是:
假如派生类class c中有定义跟基类a,b类同名的函数时,用指向派生类对象的基类指针去调用这些函数时,其中加了virtual的基类函数将被派生类的同名函数覆盖,其他的都是调用基类的方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式