1. 首页
  2. 编程语言
  3. C++ 
  4. Second Edition

Second Edition

上传者: 2024-07-23 19:08:27上传 PDF文件 14.32MB 热度 4次

合理使用RTTI因为RTTI可以让我们用一个匿名的多态指针来发现类型信息,所以它常常被初学者滥用,因为它可能在虚函数完成之前就有意义了。对于许多来自过程编程背景的人来说,要他们不把程序组织成为一组switch语句是非常困难的。他们可能会用RTTI完成这些,但这样会在代码开发维护阶段丢失多态性的非常重要的价值。C++的意图是:尽可能地使用虚函数,必要时才使用RTTI。

当然,要想以我们所想的那样使用虚函数,我们必须控制基类的定义,因为随着程序的不断扩大,有时我们可能发现基类并没有我们想要的虚函数,如果基类来自类库或其他由别人控制的来源,就可以用RTTI作为一种解决办法:我们可以继承一个新类并加上我们的成员函数。在代码的其他地方我们可以检测到我们的新增类型和调用的那个成员函数。这不会破坏多态性和程序逻辑的可扩展性,因为加一个新类并不要求我们寻找switch语句。

把一个特征放在一个基类中可能意味着为了某个特定类的利益,所有从该类派生出的类都保留了一些无意义的虚函数的残留。这使得接口变得不清晰,使那些必须重新定义纯虚函数的人当他们从这个类派生新类时感到很不方便。比方说,假设在第14章(14.6节)的WINDS.CPP程序中,我们想清除管弦乐队中所有乐器的无用值。一种方法是在基类instrument。

想了解更多关于C语言虚函数与多态性的内容,可以参考这里或者这里。如果你对具体的例子更感兴趣,看看这个多态性和虚函数的实例。当然,关于C++多态性与虚函数的习题,也可以在这里找到相关内容。

希望这些资源能帮助你更好地理解和应用RTTI与虚函数的概念!

下载地址
用户评论