深入理解C++静态联编、动态联编与虚函数底层原理、RTTI 机制

36 篇文章 448 订阅 ¥39.90 ¥99.00

静态联编和动态联编

程序调用的函数时,将使用哪个可执行代码块?编译器负责回答这个问题。将源代码中的函数调用解释为执行特定的函数代码块被称为函数名联编

在C语言中,这非常简单,因为每个函数名都对应不同的函数。但在C++中,由于函数重载的缘故,这项任务更复杂。编译器必须查看函数参数和函数名才能确定使用哪个函数。 然而,C/C++编译器可以在编译过程完成这种联编。

在编译过程中进行联编被称为静态联编(static binding),又称为静态绑定、早期联编。然而,虚函数使这项工作变得更加困难,使用哪一个函数是不能在编译时期确定的,因为编译器不知道用户将选择哪种类型的对象。所以,编译器必须能够在程序运行时选择正确的虚函数的代码,这被称为动态联编(dynamic binding),又称为动态绑定、晚期联编

下面我们看一下指针和引用类型的兼容性

  • 将派生类引用或指针转换为基类引用或指针被称为向上类型转换,这种转换是允许的,它是安全的。
  • 将基类指针或引用转换为派生类指针或引用——称为向下类型转换,如果不使用显式类型转换,则向下类型转换是不允许的
  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZY-JIMMY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值