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 存储在对象中。
//动态联编
虚表

obja 对象和虚表

base 对象和虚表

test 对象和虚表

虚函数的调用:
