首页
社区
课程
招聘
[原创]探索C++虚函数在内存中的表现形式及运行机制
发表于: 2017-9-13 10:23 20773

[原创]探索C++虚函数在内存中的表现形式及运行机制

2017-9-13 10:23
20773
收藏
免费 6
支持
分享
打赏 + 2.00雪花
打赏次数 1 雪花 + 2.00
 
赞赏  orz1ruo   +2.00 2017/09/14
最新回复 (42)
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
26






KevinsBobo



根据上面的截图来看,第一次引用回复(图1)是正确的,然后点击编辑修改了回复后引用没有了(图二)。截图截的不好,和其他楼层混在了一起。。。可能看起来不太明显。另外,我现在有40个Rank值,应该是3级了 ...

test  test
2017-9-14 11:02
0
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
27
kanxue KevinsBobo 根据上面的截图来看,第一次引用回复(图1)是正确的,然后点击编辑修改了回复后引用没有了(图二)。截图截的不好,和其他 ...
你用的是markdown编辑器回复的吗?我是用markdown编辑器回复才会有这个问题
2017-9-14 11:06
0
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
28
KevinsBobo 你用的是markdown编辑器回复的吗?我是用markdown编辑器回复才会有这个问题
默认引用,就是用普通编辑器的模式。编辑的时候,也是普通编辑器。若切换到markdown,原来的内容就没有了。就是在编辑过程中,markdown和普通编辑不能切换。
2017-9-14 11:28
0
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
29
kanxue 默认引用,就是用普通编辑器的模式。编辑的时候,也是普通编辑器。若切换到markdown,原来的内容就没有了。就是在编辑过程中,markdown和普通编辑不能切换。
 

好吧,我是点了引用之后就选择了高级回复(并没有使用普通编辑器),用markdown编辑好了回复内容,此时也是正常引用,只是在点击编辑之后引用就没有了。原来是还不支持markdown编辑器的引用,但是比如说我这一次用markdown编辑器回复,在我不重新编辑的时候引用是存在的。

2017-9-14 11:34
0
雪    币: 1080
活跃值: (165)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
30

hello

2017-9-14 11:46
0
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
31
axiuno # hello
我已重现了,谢谢反馈!
2017-9-14 13:34
0
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
32
KevinsBobo 好吧,我是点了引用之后就选择了**高级回复**(并没有使用普通编辑器),用`markdown`编辑好了回复内容,此时也是正常引用,只是在点击编辑之后引用就没有了。原来是还不支持`markdown`编辑 ...
我已重现了,谢谢反馈!
2017-9-14 13:35
0
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
33
kanxue 我已重现了,谢谢反馈!
不客气,也感谢看雪这个平台
2017-9-14 14:21
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
不错~
2017-9-14 21:28
0
雪    币: 224
活跃值: (384)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
这个文章够看一天
2017-10-8 22:08
0
雪    币: 441
活跃值: (1020)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
36
能写出这么多东西,也是NB。
2018-1-17 15:27
0
雪    币: 7333
活跃值: (4034)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
太长了,看到菱形继承实在看不下去了,不过就前面的那几个总结也弥补了以前一些没考虑过的问题,赞一个
2019-10-11 10:22
0
雪    币: 7333
活跃值: (4034)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
简单总结一下关键点:子类有个和父类同名同参的虚函数,会覆盖;子类有个和父类同名但不同参的虚函数,会隐藏(此时无论是对于子类来说无论是直接调用还是间接调用都调不到父类同名函数) 

 这里是不是有问题,我测试了子类可以访问到基类的同名不同型函数的啊
2019-10-11 13:37
0
雪    币: 137
活跃值: (398)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
虚函数的问题很多面试也都会问到 过来学习一下
2019-10-11 14:06
0
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
40
htpidk 简单总结一下关键点:子类有个和父类同名同参的虚函数,会覆盖;子类有个和父类同名但不同参的虚函数,会隐藏(此时无论是对于子类来说无论是直接调用还是间接调用都调不到父类同名函数) &am ...
我的文章的环境是:vs2013 平台工具集:Visual Studio 2013 - Windows Xp (v120_xp)  32bit。我看你用的是 Dev-C++。不同的编译平台是有区别的。
2019-10-11 14:23
0
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
41
htpidk 简单总结一下关键点:子类有个和父类同名同参的虚函数,会覆盖;子类有个和父类同名但不同参的虚函数,会隐藏(此时无论是对于子类来说无论是直接调用还是间接调用都调不到父类同名函数) &am ...
用你的代码试了一下,vs2013和你的结果一样,才发现了你是这样用的:
       bb.A::f(100);
       B *p = new(B);
       p->A::f(200);
抱歉,我文章中没有指出这种情况(这样子相当于指定编译器使用 A 类的 f 函数)

如果是下面的方式调用,还是我文章中总结的那样,会报错:
       bb.f(100);
       B *p = new(B);
       p->f(200);
最后于 2019-10-11 14:46 被KevinsBobo编辑 ,原因:
2019-10-11 14:38
0
雪    币: 7333
活跃值: (4034)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
KevinsBobo htpidk 简单总结一下关键点:子类有个和父类同名同参的虚函数,会覆盖;子类有个和父类同名但不同参的虚函数,会隐藏(此时无论是对于子类来说无论是直接调用还是 ...
是的,下面那种写法会报错,所以我把他注释掉了。继续学习
2019-10-11 15:00
0
雪    币: 1785
活跃值: (3975)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
不错,写的很好
2021-9-22 11:18
0
游客
登录 | 注册 方可回帖
返回
//