首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

练习题答案:函数指针转换

练习题答案

在上一篇文章中,我们留下了一道课后练习题。

题目是:你需要预测下列代码编译后得到的汇编代码进行分析。

这是我们的C++代码:

编译器会对上述代码进行编译,并生成类似如下的汇编代码:

如果使用图片来表示,则如下;

只是为了好玩而已,在这里,我交换了Base1和Base2的顺序。标准中没有关于为基类分配存储的顺序的要求,因此,如果编译器认为这样做会更有效,则完全有权利将Base2放在首位。

指向类Derived的成员函数的指针希望this指针位于q处。因此,当我们有一个p时,除了原始函数指针想要进行的其他任何调整之外,我们还需要向其添加sizeof(Base3)以将其转换为q。

这就是为什么我们将sizeof(Base3)添加到现有调节器中以制作新的组合调节器的原因。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

本文来自:《Answer to exercise: Pointer to member function cast》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201205A031DU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券