已知两个类O、P,类0中定义了一个私有方法F1和一个公有方法F2;类P中定义了一个公有方法F3,类P为类O的派生类。它们的继承方式如下所示。 class P:private O{…}; 在关于类P的描述中正确的是( )。

admin2019-06-12  25

问题 已知两个类O、P,类0中定义了一个私有方法F1和一个公有方法F2;类P中定义了一个公有方法F3,类P为类O的派生类。它们的继承方式如下所示。
class P:private O{…};
在关于类P的描述中正确的是(    )。

选项 A、类P的对象可以访问F1,但不能访问F2
B、类P的对象可以访问F2,但不能访问F1
C、类P的对象既可以访问F1,也可以访问F2
D、类P的对象既不能访问F1,也不能访问F2

答案D

解析 本题主要考查继承中的一些基本知识。
在C++中,类的继承主要有如下3种方式:
(1)公有继承(public)。公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。因此在公有继承时,派生类的对象可以访问基类中的公有成员,派生类的成员函数可以访问基类中的公有成员和保护成员。
(2)私有继承(private)。私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。
(3)保护继承(protected)。保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。
总的来说,基类成员对派生类的对象来说,是否能被访问,就要看基类的成员在派生类中变成了什么类型的成员。例如,私有继承时,基类的公有成员和私有成员都变成了派生类中的私有成员,因此对于派生类中的对象来说基类的公有成员和私有成员就是不可见的。
    在本题中,由于类P是对类O的私有继承,因此将类O的公有成员和私有成员都变成了派生类中的私有成员,因此类P的对象无法访问F1,也无法访问F2
转载请注明原文地址:https://kaotiyun.com/show/YzCZ777K
0

随机试题
最新回复(0)