1 从过程到对象——类概念的引入
真实世界是由“对象”组成的,无论是动物、植物、工厂还是机器等,都是根据它们的特征,细分出来的对象类别。尽管在软件设计时,更多时候我们面对的是经过高度抽象化的模型,但最终需要解决的还是真实世界中的问题。因此,如果能够在软件设计中按照对象来进行建模,将更加契合真实世界的情况,有利于解决高度复杂的实际问题。典型的过程化程序设计语言,如C语言,其程序设计更倾向于面向过程,以函数为基本单位。这在自顶向下设计方法深入人心的今天,往往有些力不从心,因为它很难恰如其分地模拟真实世界。
对于C++语言来说,设计的基本单位是类。类是逻辑上相关的函数与数据的封装,它是对所要处理的问题的抽象描述。引入了类概念的面向对象程序设计语言 C++具有更高的代码集成度,从而更适合用于大型复杂程序的开发。而由类产生的基类、继承、派生、模板等概念,更是极大地丰富了软件工程师解决问题的手段。如此强大的概念,如若使用不当,必然带来许多意想不到的隐患。为此MISRA C++:2008中专门讨论了与类使用相关的问题,简单举例如下。
规则10-1-3(强制): 同一层级的某个基类不允许既是虚基类又是非虚基类。
这是因为,如果一个基类在多重继承层次中既是虚类型,又是非虚类型,则在派生出来的相应对象中将至少有2个该基类的子对象拷贝。这可能与开发人员的理解不一致。为了更好说明这个问题,请看下面的程序:
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!