type
date
status
slug
summary
tags
category
icon
password
网址
多态的原理
虚函数表的示例:运行时多态的原理 虚函数指针表简称虚表, 虚表就是虚函数指针的集合,虚函数指针表本质是一个存储虚函数指针的指针 数组,这个数组的首元素之上存储RTTI( 运行时类型识别信息的指针),从数组下标0开始依次存储虚 函数地址, 最后面放了一个nullptr。 类型设计中定义了虚函数,此类型就有了对应的虚表(vftable),v代表virtual, f代表function,table代表 表,数组; 使用此类型定义的对象就含有一个指向虚表的指针,名字是 __vfptr,v代表virtual, f代表 function, ptr 代表指针。 dynamic_cast
虚函数指针表存储在只读数据段(.rodata) //虚函数指针表简称虚表, 虚表就是虚函数指针的集合, //虚表本质是一个存储虚函数指针的指针数组, //这个数组的首元素之上存储RTTI(运行时类型识别信息的指针), //从数组下标0开始依次存储虚函数地址, 最后面放了一个nullptr。 //虚表存储在只读数据段(.rodata) // //类型设计中定义了虚函数,此类型就有了对应的虚表(vftable), //v代表virtual, f代表function, table代表表,数组; //使用此类型定义的对象就含有一个指向虚表的指针,名字是 vfptr, //v代表virtual, f代表function, ptr 代表指针。 //vfptr 存储在对象中。 //动态联编
虚表
notion image
obja 对象和虚表
notion image
base 对象和虚表
notion image
test 对象和虚表
notion image
虚函数的调用:
notion image