C++常见面试题

1.面向对象的三个基本元素,五个基本原则

 三个基本元素:封装、继承、多态   五大基本原则:单一职责原则(SRP) 、开发封闭原则(OCP)、依赖倒转原则(DIP)、里氏代换原则(LSP)、接口分离原则

 SRP:是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来

    对一个类而言,应该仅有一个引起它变化的原因

 OCP:一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,

 那么应当在不用修改服务端功能代      码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来

    软件实体应该是可以扩展的,但是不可修改

 DIP: 做项目时,发现业务逻辑的高层模块都是一样的,但客户希望使用不同的数据库或存储信息方式,这时就出现麻烦,高层模块和数据库绑定在一起,没办法复用。

    高层模块不应该依赖于底层模块。两个模块都应该依赖于抽象。

    抽象不应该依赖于细节。细节更应该依赖于抽象。

 LSP:  只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。

    子类型必须能够替换掉它们的基类型

 ISP:  一个接口应该保证,实现该接口的实例对象可以只呈现为单一的角色;这样,当某个客户程序的要求发生变化,而迫使接口发生改变时,影响到其他客户程序的    可    能性最小

    多个专用接口优于一个单一的通用接口

 

posted @ 2013-09-18 22:04  野原新之助  阅读(251)  评论(0编辑  收藏  举报