利用多态实现动态绑定
在面向对象编程中,多态是一个强大的概念,而C++通过虚函数为多态提供了直接的语言支持。本文将深入探讨虚函数如何实现动态绑定,以及相关的内存模型和实现细节。
1. 函数隐藏与动态绑定的引入
在之前的代码片段中, Student 类既使用 Student::Print() 重写了 Person::Print() ,又使用 Student::Print(const string &) 重载了 Student::Print() ,以包含额外的所需接口。对于存储在 Student 变量中的 Student 对象,两个接口都可用,基类接口不再被隐藏。当然,由 Person 指针引用的 Student 对象仅具有 Person::Print() 接口,这是预期的。
函数隐藏并不常见,但一旦出现,往往会带来意外。了解可能发生的情况及其原因,有助于成为更好的程序员。接下来,我们将深入探究虚函数如何支持将特定方法动态绑定到操作上。
2. 理解动态绑定
非虚函数在编译时进行静态绑定。也就是说,函数的地址在编译时根据对象的假定类型确定。例如,如果实例化一个 Student 类型的对象,函数调用会从 Student 类开始验证原型,如果未找到,则会向上遍历继承层次结构,到每个基类
超级会员免费看
订阅专栏 解锁全文
1062

被折叠的 条评论
为什么被折叠?



