多态性 C++思想

来源:互联网 发布:php网页制作教程 编辑:程序博客网 时间:2024/05/20 21:46

当处理类型层次结构时,程序员常常希望不把对象看作是某一特殊类型的成员,而把它看作基本类型成员,这样就可以编写不依赖于特殊类型的代码

在形体例子中,函数可以对一般形体进行操作,而不关心它们是圆、正方形还是三角形。

所有的形体都能被绘制、擦除和移动,所以这些函数能简单地发送消息给一个形体对象,而不考虑这个对象如何处理这个消息。

新添类型不影响原来的代码,这是扩展面向对象程序以处理新情况的最普通的方法。
例如,可以派生出形体的一个新的子类,称为五边形,而不必修改那些处理一般形体的函数。
通过派生新子类,很容易扩展程序,这个能力很重要,因为它极大地减少了软件维护的花费。

(所谓“软件危机”正是由软件的实际花费远远超出人们的想象而产生的。)

为了实现晚捆绑,编译器在真正调用的地方插入一段特殊的二进制代码。通过使用存放在
对象自身中的信息,这段代码在运行时计算被调用函数的地址(这一问题将在第1 4章中详细介
绍)。这样,每个对象就能根据一个指针的内容有不同的行为。当一个对象接收到消息时,它
根据这个消息判断应当做什么。
程序员可以用关键字v i r t u a l表明他希望某个函数有晚捆绑的灵活性,而并不需要懂得
v i r t u a l的使用机制。没有它,就不能用C + +做面向对象的程序设计。Vi r t u a l函数(虚函数)表
示允许在相同家族中的类有不同的行为。这些不同是引起多态行为的原因。

0 0
原创粉丝点击