向上映射-learning ros for robotics programming - second edition

lens4762 3 0 pdf 2024-07-23 21:07:06

13.7 多重继承

既然我们已可以从一个类继承,那么我们也就应该能同时从多个类继承。实际上这是可以做到的,但是否它象设计部分一样有意义仍是一个有争议的话题。不过有一点是可以肯定的:直到我们已经很好地学会程序设计并完全理解这门语言时,我们才能试着用它。这时,我们大概会认识到,不管我们如何认为我们必须用多重继承,我们总是能通过单重继承来完成。起初,多重继承似乎很简单,在继承期间,只需在基类表中增加多个类,用逗号隔开。然而,多重继承有很多含糊的可能性,这就是为什么第16章要讨论这一主题的原因。

更多关于多重继承的讨论,请参考浅析python继承与多重继承以及面向对象之二继承多重继承

13.8 渐增式开发

继承的优点之一是它支持渐增式开发,它允许我们在已存在的代码中引进新代码,而不会给原代码带来错误,即使产生了错误,这个错误也只与新代码有关。也就是说当我们继承已存在的功能类并对其增加数据成员和成员函数(并重定义已存在的成员函数)时,已存在类的代码并不会被改变,更不会产生错误。如果错误出现,我们就会知道它肯定是在我们的新派生代码中。相对于修改已存在代码体的做法来说,这些新代码很短也很容易读。相当奇怪的是,这些类如何清楚地被隔离。为了重用这些代码,甚至不需要这些成员函数的源代码,只需要表示类的头文件和目标文件或带有已编译成员函数的库文件。(对于继承和组合都是这样。)认识到程序开发是一个渐增过程,就象人的学习过程一样,这是很重要的。我们能做尽可能多的分析,但当开始一个项目时,我们仍不可能知道所有的答案。如果开始把项目作为一个有机的、可进化的生物来“培养”,而不是完全一次性的构造它,使之像一个玻璃盒子式的摩天大楼,那么我们就会获得更大的成功和更直接的反馈。虽然继承对于实验是有用的技术,但在事情稳定之后,我们需要用新眼光重新审视一下我们的类层次,把它看成可感知的结构。记住,继承首先表示一种关系,其意为:“新类是老类的一个类型。”我们的程序不应当关心怎样摆布比特位,而应当关心如何创建和处理各类型的对象,以便用问题的术语表示模型。

想了解更多关于渐增式开发的应用,请查看C++ 多重继承以及python多重继承实例

13.9 向上映射

在这一章的前面,我们已经看到了由ofstream派生而来的类的对象如何有ofstream对象所有的特性和行为。在13.5.1节中FNAME2.CPP中,任何ofstream成员函数应当能被fname2对象调用。继承的最重要的方面不是它为新类提供了成员函数,而在于它是基类与新类之间的关系描述:“新类是已存在类的一个类型”。这个描述不仅仅是一种解释继承的方法—它直接由编译器支持。考虑称为270 C++编程思想下载。

更多关于继承映射的细节,可以参考Hibernate继承映射继承映射的

用户评论
请输入评论内容
评分:
暂无评论