21、利用多态实现动态绑定

利用多态实现动态绑定

在面向对象编程中,多态是一个强大的概念,而C++通过虚函数为多态提供了直接的语言支持。本文将深入探讨虚函数如何实现动态绑定,以及相关的内存模型和实现细节。

1. 函数隐藏与动态绑定的引入

在之前的代码片段中, Student 类既使用 Student::Print() 重写了 Person::Print() ,又使用 Student::Print(const string &) 重载了 Student::Print() ,以包含额外的所需接口。对于存储在 Student 变量中的 Student 对象,两个接口都可用,基类接口不再被隐藏。当然,由 Person 指针引用的 Student 对象仅具有 Person::Print() 接口,这是预期的。

函数隐藏并不常见,但一旦出现,往往会带来意外。了解可能发生的情况及其原因,有助于成为更好的程序员。接下来,我们将深入探究虚函数如何支持将特定方法动态绑定到操作上。

2. 理解动态绑定

非虚函数在编译时进行静态绑定。也就是说,函数的地址在编译时根据对象的假定类型确定。例如,如果实例化一个 Student 类型的对象,函数调用会从 Student 类开始验证原型,如果未找到,则会向上遍历继承层次结构,到每个基类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值