(https://img-blog.csdnimg.cn/4f7de3e81f834b929f82bc42c11937ec.jpg)
一行好不好,对于类含有虚函数,在生成此类对象时会插入指向虚函数表的指针。虚函数表里保存了各个虚函数的入口地址。但是在vs2019上反汇编验证,虚函数表的第-1项,也是一个指针,指向该对象的类型信息,能关联到该类的type_info对象。这个对象是编译时写入程序文件的,通过type_id函数可以返回对该对象的引用。
动态类型转换,其实也会通过虚函数表的第-1项访问到这个类型对象,以确定是否可以进行动态转换。
汇编代码的跟踪验证,大致过程如图,里面有很多的函数调用。
但结论是仍然验证了,在vs2019上,虚函数表的第-1项,也是一个指针,指向该对象的类型信息