试比较类的三种继承方式public,protected,private之间的差别。

题目
问答题
试比较类的三种继承方式public,protected,private之间的差别。
参考答案和解析
正确答案: 不同的继承方式,导致不同访问属性的基类成员在派生类中的访问属性也有所不同:
公有继承,使得基类public(公有)和protected(保护)成员的访问属性在派生类中不变,而基类private(私有)成员不可访问。
私有继承,使得基类public(公有)和protected(保护)成员都以private(私有)成员身份出现在派生类中,而基类private(私有)成员不可访问。
保护继承中,基类public(公有)和protected(保护)成员都以protected(保护)成员身份出现在派生类中,而基类private(私有)成员不可访问。
解析: 暂无解析
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

( 12 )在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承 private 。已知有如

下类定义:

class Base {

protected:

void fun( ) {}

};

class Derived : Base { };

则 Bas e 类中的成员函 数 fun() , 在 Derive d 类中的访问权限是 【 12 】 ( 注意要求填 写private 、 protecte d或 public 中的一项 )。


正确答案:

第2题:

( 13 )如果派生类以 protected 方式继承基类,则原基类的 protected 成员和 public 成员在派生类中的

访问属性分别是

A ) public 和 public

B ) public 和 protected

C ) protected 和 public

D ) protected 和 protected


正确答案:D

第3题:

下面描述中,表达错误的是()。

A公有继承时基类中的public成员在派生类中仍是public的

B公有继承是基类中的private成员在派生类中仍是private的

C公有继承时基类中的protected成员在派生类中仍是protected的

D私有继承时基类中的public成员在派生类中是private的


正确答案:B

第4题:

下列描述中,表达错误的是( )。

A.公有继承时基类中的public成员在派生类中仍是public的

B.公有继承时基类中的private成员在派生类中仍是private的

C.公有继承时基类中的protected成员在派生类中仍是protected的

D.私有继承时基类中的public成员在派生类中是private的


正确答案:B
解析:C++中,继承方式控制了基类中具有不同访问属性的成员在派生类中的访问属性。基类中的私有成员在派生类中是隐蔽的,只能在基类内部访问。所以选项B是错误的。派生类中的成员不能访问基类中的私有成员,但可以访问基类中的公有成员和保护成员。此时派生类对基类中各个成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性。基类中公有成员和保护成员在派生类中的访问控制属性将随着继承方式而改变:派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍然为保护成员。所以,选项A、C和D都是正确的。

第5题:

设有基类定义:

class Cbase

{ private:int a;

protected:int b;

public:int c;

};

派生类采用何种继承方式可以使成员变量b成为自己的私有成员

A.私有继承

B.保护继承

C.公有继承

D.私有、保护、公有均可


正确答案:A
解析:类的继承中有三种继承方式,他们和类的访问级别相结合在派生类中可以产生多种访问级别。基类中成员为保护的,在派生类中要为私有的,可以采用私有继承。基类中的保护成员在派生类中不是私有就是保护,即级别只能降低而不能升高。基类中的公有成员则可能为私有、保护和私有。

第6题:

下列说法中错误的是

A.公有继承时基类中的public成员在派生类中仍是public成员

B.私有继承时基类中的protecte成员在派生类中仍是protected成员

C.私有继承时基类中的public成员在派生类中是private成员

D.保护继承时基类中的public成员在派生类中是protected成员


正确答案:B

第7题:

如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是

A.public和public

B.public和protected

C.protected和public

D.protected和protected


正确答案:D
解析:本题考查的知识点是:基类成员在派生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。此时派生类对基类中各成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性,基类中公有成员和保护成员在派生类中的访问属性将随着继承方式而改变:派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员。故本题应该选择D。

第8题:

在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承 private。已知有如下类定义:

class Base{

protected:

void fun(){}

};

Class Derived: Base{};

则Base 类中的成员函数fun(),在Derived 类中的访问权限是 [12] (注意:要求填写private、protected 或public 中的一项)。


正确答案:

sin(x)

第9题:

基类的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可访问,该情况为()继承。

A. 公有

B. 私有

C. 全部

D. 保护


正确答案:D

第10题:

下列叙述中错误的是

A.公有继承时基类中的public成员在派生类中仍是public成员

B.私有继承时基类中的protected成员在派生类中仍是protected成员

C.私有继承时基类中的public成员在派生类中是private成员

D.保护继承时基类中的public成员在派生类中是protected成员


正确答案:B
解析:在私有继承方式下,所有的类成员都继承为私有成员。

更多相关问题