C++ 虚函数表剖析

2022-08-04 00:00 评论 0 条

因此在上述的例子中,将Derived类型的子类传入show函数时,实际上类型转化为了Base,由于此时虚函数并未完成定义,Derived的func()此时仅仅是属于Derived自己的虚函数,所以在show中b并不能调用,而调用的是Base内的func。

这就是纯虚函数的作用。

我不知道你懂了多少,我知道如果没有程序你无法了解。

**C++中的虚函数(virtualfunction)****简****介**缺省情况下,类的成员函数是非虚拟的。

,"

在上面的代码中,寄存器ECX保存的就是这个this指针,同时它的值又赋给了寄存器EAX。

"

当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没有详细的说明,没有比较,没有举一反。

不利于学习和阅读,所以这是我想写下这篇文章的原因。

接下来,虚表的地址被赋给了由寄存器EAX指定的内存中。

他派生的类的纯虚函数没有被改写,那么,它的派生类还是个抽象类。

关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。

例12.2基类与派生类中有同名函数。

虚函数的重要用途在这里可见一斑。

总结:1、纯虚函数声明如下:virtualvoidfuntion1()=0;纯虚函数一定没有定义,纯虚函数用来规范派生类的行为,即接口。

比如:模板技术,_RTTI_技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。

所以,classB的print()也成了虚函数。

所以它使用的VPTR必须是对于这个类的VTABLE。

**(4)**通过虚函数与指向基类对象的指针变量的配合使用,就能方便地调用同一类族中不同类的同名函数,只要先用基类指针指向即可。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:C++ 虚函数表剖析 | bwin客户端登录 – 最新官网app下载
分类:区块链 标签:

发表评论


表情