【C/C++】面向对象的基本概念

问题1:

Which of the following(s) are NOT related to object-Oriented Design?

A. Inheritance

B. Liskov substitution principle

C. Open-close principle

D. Polymorphism

E. Defensive programming

问题2:

Which of the following C++ keyword(s) is(are) related to encapsulation?

A. virtual

B. void 

C. interface

D. private

E. all of the above

问题3:

C++中的空类默认产生哪些类成员函数?

class Empty {
	public :
}; 

======================================================================================

问题1 解析:

面向对象设计的三原则:封装、继承、多态。

里氏代换原则(Liskov Substitution principle)是继承复用的基石:子类必须能够替换它们的基类型。如果每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有对象o1都代换为o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。换言之,一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉出基类对象和子类对象的区别。只有衍生类替换基类的同时软件实体的功能没有发生变化,基类才能真正被复用。

开闭原则(Open-close principle)是面向对象设计的重要特性之一:软件对扩展应该是开放的,对修改应该是关闭的。通俗点说,已经设计好的代码应该是不做修改的(闭),如果需求改变,就另外自己去扩展一块去(开),别破坏我原来的代码。

防御式编程(Defensive programming)只是一种编程技巧,与面向对象无关。其主要思想是:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。

答案E

问题2解析:

封装有一个主要的好处,就是增加软件代码的内聚性。通过增加内聚性,进而提高可复用性和可维护性。此外还可以“信息隐藏”:把不该暴露的信息藏起来。如private、protected之类的关键字。这些关键字可以通过访问控制,来达到信息隐藏的目的。

本题中,interface属于继承,virtual属于多态,private才是与封装有关。

答案D

问题3解析:

类的概念问题。

答案:对于一个空类,编译器默认产生4个成员函数:默认构造函数、析构函数、拷贝构造函数和赋值函数。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值