【发布时间】:2010-05-12 22:34:33
【问题描述】:
我正在阅读有关 C++ 中的虚函数的教科书,但我的书中并未详细说明运行时绑定的确切含义。它没有告诉我为什么需要运行时绑定。
也许 SO 的好人可以提供一些链接或信息?
谢谢:]
【问题讨论】:
标签: c++ binding runtime virtual
我正在阅读有关 C++ 中的虚函数的教科书,但我的书中并未详细说明运行时绑定的确切含义。它没有告诉我为什么需要运行时绑定。
也许 SO 的好人可以提供一些链接或信息?
谢谢:]
【问题讨论】:
标签: c++ binding runtime virtual
这个怎么样? ;D
说真的……第一个 link 看起来不错。
这是一个预览:
使用虚函数的最突出的原因是在派生类中具有不同的功能。非虚成员函数和虚成员函数的区别在于,非虚成员函数是在编译时解析的。
还有来自另一个site:
在大型、复杂的程序中,虚函数允许程序员简化编程过程。如果使用正确,基类将成功定义其派生类的接口。但是,程序将把这个接口的实现留给派生类。因此,程序员可以使用一个接口进行多种实现。此功能还允许创建建立标准接口的类库,但允许程序员根据可能出现的任何独特的实现情况来定制这些接口。最流行的库之一是 Microsoft 基础类 (MFC) 库,它提供了在 Windows 环境中编程所需的接口。这个库让程序员不必重新发明 Windows 接口,而是让他或她专注于这些接口的具体实现。
【讨论】:
运行时绑定的最简单形式是多态性。在 C++ 的上下文中,多态是通过虚函数实现的。这样做的基本目的是通过指针或对基类的引用来调用派生类实例上的方法。
谷歌搜索虚函数应该会给你很多关于如何以及为什么这样做的好结果。
【讨论】:
请阅读 Bobs 大叔关于面向对象设计的 SOLID 原则的文章:http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
显然,它们与运行时绑定无关,但它们确实描述了您尝试解决的需要使用运行时绑定的设计问题类型。
我认为关于开放封闭原则的文章可能最好地展示了(同样,这篇文章不是关于运行时绑定)何时需要这样做: http://www.objectmentor.com/resources/articles/ocp.pdf
【讨论】: