标题好像有点坑,进来可是干货…

这里找了下 C++下的动态多态的内部实现方法,虚函数表….

讲解未开始,代码先上来…

 

一步步讲解代码:

首先我们定义了 A B C 三个类,每个类都有自己的方法,都是虚函数…

然后进入main 函数来看看,首先输出三个类的大小…

可以得到

结论1 :一个类或它的父类定义有虚函数,则有一个指向虚函数表的指针,如果多继承,则有多个指针

接下来,我们找到了函数的地址,然后打印输出了函数地址和他们对应显示的内容。

PS.这种方法是很危险的。

接下来我们找到了对象 c ,输出了它的两个虚函数表的地址。

结论2:虚函数表存放的是函数的地址。

然后呢,输出每个表的表项地址 指向地址(函数)运行函数 得到输出

那如果到这里都理解的话,我们就明白虚函数是咋回事了…

通过指针得到表,表内存地址,查表调用函数…

 

PS.该代码是不能在VS上运行的,建议用 Dev-CPP…

搞搞虚函数表,无所不用其极…
Tagged on:
0 0 投票数
Article Rating
订阅评论
提醒

0 评论
最新
最旧 最多投票
内联反馈
查看所有评论