继承笔试题---判断p1,p2,p3的关系

代码:

class Base1
{
public:
	int _b1;
};
class Base2
{
public:
	int _b2;
};
class Derive :public Base1, public Base2
{
public:
	int _d;
};
int main()
{
	Derive d;
	Base1* p1 = &d;
	Base2* p2 = &d;
	Derive* p3 = &d;
	system("pause");
	return 0;
}

题目:

A、p1==p2==p3

B、p1<p2<p3

C、p1==p3!=p2

D、p1!=p2!=p3

这道题的答案是C。这道题主要考察了继承的顺序问题,哪个类先继承哪个类就在最上面,下面用图来解释说明:

在内存中,Base1先被继承,存在于内存的最上方,所以p1指向Base1,Base2后被继承,所以p2指向Base2;而Derive继承了Base1和Base2,代表的是一个整体,所以指针p3指向内存的顶部,即p3指向的是Base1;

需要注意的是,若Base1和Base2的继承顺序反过来,则指针p1和p2所指向的位置也会相反。

猜你喜欢

转载自blog.csdn.net/yam_sunshine/article/details/88745831
p2
今日推荐