C++ 继承习题总结(期末速成)

1.下面关于继承说法不正确的是( )

A.继承可以使用现有类的所有功能,并在无需重新编写原来类的情况下对这些功能进行扩展
B.继承体系中子类必须要体现出与基类的不同
C.子类对象一定比基类对象大
D.继承呈现了面相对象程序设计的层次结构,体现了有简单到复杂的认知过程

答案解析
A.这是继承的功能,也是代码复用的体现

B.继承除了吸收基类成员之外,一般还需要扩充自己的数据成员,跟基类有所不一样

C.不一定,有可能子类只是改写父类的方法而已,并没有增加其自身的数据成员,则大小一样,故错误

D.继承体现了一定的层次结构和认知过程

2.关于继承说法正确的是( )

A.所有的类都可以被继承
B.Car(汽车)类和Tire(轮胎)类可以使用继承方式体现
C.继承是实现代码复用的唯一手段
D.狗是一种动物,可以体现出继承的思想

答案解析
A.final说明的类不能被继承

B.应该使用组合,因为Tire类跟Car类属于Has-a的关系

C.模板也是代码复用的重要手段

D.狗是动物的一种,属于is-a关系,是继承的体现

3.下面关于访问权限与继承权限说法不正确的是( )

A.访问权限和继承权限是不同的概念
B.访问权限和继承权限关键字上是一样的,但是出现位置不一样
C.如果是protected继承方式,基类public的成员变量能通过基类对象在类外直接访问
D.基类私有的成员变量在子类中都不能直接访问,因为没有被子类继承了

答案解析
A.两个权限控制的东西不一样

B.访问权限在类内部,继承权限在类外

C.只要是public成员对象都可以直接访问

D.基类私有成员不能直接访问不是没有被继承,而是权限问题

4.关于同名隐藏的说法正确的是( )

A.同一个类中,不能存在相同名称的成员函数
B.在基类和子类中,可以存在相同名称但参数列表不同的函数,他们形成重载
C.在基类和子类中,不能存在函数原型完全相同的函数,因为编译时会报错
D.成员函数可以同名,只要参数类型不同即可,成员变量不能同名,即使类型不同

答案解析
A.可以存在,如函数重载

B.基类与子类函数名字相同,参数不同,形成的是隐藏

C.可以共存

D.成员函数在同一个类里面同名,此时构成了重载,但变量一定不能同名,故正确

5.关于同名隐藏的说法正确的是( )

下面代码输出结果:( )

class A

{

public:

void f(){ cout<<“A::f()”<<endl; }

int a;

};

class B : public A

{

public:

void f(int a){cout<<“B::f()”<<endl;}

int a;

};

int main()

{

B b;

b.f();

return 0;

}

A.打印A::f()
B.打印B::f()
C.不能通过编译,因为基类和派生类中a的类型以及名称完全相同
D.以上说法都不对
答案解析
A.错误

B.错误

C.不能通过编译是正确的,不过原因不是因为成员变量a的问题,而是子类同名隐藏了父类方法的原因

D.很显然以上说法都不对

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明教张公子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值