跳过第二章直接梳理第三章的原因是第二章主要讲的是工具向内容,一方面详细地介绍了版本控制软件Subversion/TortoiseSVN和IDE:Visual Studio的使用技巧,另一方面简单介绍了函数时间占用相关剖析器,内存泄漏、内存损坏的原理和相应的检测工具。此方面工具向内容不做过多搬运,感兴趣的小伙伴可自行查阅第二章内容。
面向对象编程
类/对象
类是属性和行为的集合(class includes variables and functions)。描述类的各别实例即是对象。比如一条叫阿旺的狗是“dog”类的一个实例。类和实例之间存在一对多的关系。
封装
对象向外提供有限接口,隐藏内部状态和实现细节。
继承
延申现有的类用来定义新类。新类可延申/修改现有类的数据/接口/行为。延伸类和现有类是“is-a”关系。比如圆形是一个形状,狗是一个动物。
书中将这一概念简单延申至“多重继承”的概念。多重继承指新类继承至一个或以上的父类。这种设计会造成代码混淆且复杂(继承结构由树状变成图状),其中一个原因则是如果A继承自B和C,而B和C继承自同一个类D,则会出现菱形继承的问题,导致实例化A时会实例化两个D。多重继承同样会使类型转换变得复杂。因此尽量避免使用多继承,或者只允许多重继承一些简单且无父类的类。
多态
多态指用单一共同接口操作不同类型的对象。比如调用Shape.Draw()来操作继承自Shape的Circle、Rectangle,它们即便不是相同的绘制方法,却可以通过调用同一个接口来实现。
合成与聚合
合成/聚合:has-a/use-a关系。比如太空船有一台引擎,汽车有一台发动机。善用合成/聚合,避免滥用继承。
设计模式
同