C++类继承问题

第四题
2024-10-27 20:30:21
推荐回答(4个)
回答1:

对于保护继承方式:
这种继承方式与私有继承方式的情况相同。两者的区别仅在于对派生类的成员而言,
·基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员是可见的:基类的公有成员和保护成员都作为派生类的保护成员,并且不能被这个派生类的子类所访问;基类的私有成员是不可见的:派生类不可访问基类中的私有成员。
·对派生类对象来说,基类的所有成员都是不可见的。
所以,在保护继承时,基类的成员也只能由直接派生类访问,而无法再往下继承。
第四题中,在保护继承方式中,除基类的保护成员外,基类的公有成员也是派生类的保护成员。

回答2:

首先C是错误的。因为如果是私有继承,那么派生类应该就没有保护成员,因为私有继承之后,基类的所有成员都成了私有成员,那么派生类的保护成员不可能比基类的保护成员多,这与题意相悖。正确答案是B。因为保护继承的话,基类的公有成员和保护成员在派生类中都是保护成员了,所以派生类的保护成员要比基类的保护成员多。(以上都是在派生类没有定义自己的保护成员的前提下讨论的,没有这个前提就无法确定唯一的答案)。

回答3:

B 因为父类的公有成员函数和成员变量会变成保护成员函数和成员变量

回答4:

我靠,出题的都这么变态了,差点转不过弯来