c++练习关于虚函数

it2022-07-05  166

观察下面一段代码:class ClassA{public:virtual ~ ClassA(){};virtual void FunctionA(){};};class ClassB{public:virtual void FunctionB(){};};class ClassC : public ClassA,public ClassB{public:};

ClassCaObject;ClassA* pA=&aObject;ClassB* pB=&aObject;ClassC* pC=&aObject;关于pA,pB,pC的取值,下面的描述中正确的是:A.pA,pB,pC的取值相同.              B.pC=pA+pBC.pA和pB不相同                     D.pC不等于pA也不等于pB

解答:PA=PC PB的地址比他们都大点实际运行一下,选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;存在隐式转换的,也就是说源代码等号右边虽然写法都一样,但编译器的解释是不一样的.

 

转载于:https://www.cnblogs.com/iamdanger/p/3625712.html


最新回复(0)