博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++虚表的使用 通过虚表调用虚函数的演示代码
阅读量:6225 次
发布时间:2019-06-21

本文共 569 字,大约阅读时间需要 1 分钟。

 

//演示一下c++如何找到虚表地址vptr以及如何通过虚表调用虚函数//zhangpeng@myhexin.com 20130811#include 
using namespace std;class CTest{public: CTest(){} virtual void Print(){cout<<"hello world"<
>第一章虚表的第一项是typeinfo,第二项应该是第一个虚函数Add()。 //但vc++2010这里第一项就是Add() int* p1 = (int*)&a; printf("vptr=%p\n", *p1); int* p2 = (int*)&b; printf("vptr=%p\n", *p2); int* vptr = (int*)(*p2); //通过虚表直接调用Add typedef void(*FUNC)(); //这里参数不太确定,参数为void也是可以的 typedef void(*FUNC2)(CTest*); FUNC pf = (FUNC)vptr[0]; //书中说函数在虚表里会被改为void func(CTest*) FUNC2 pf2 = (FUNC2)pf; pf2(&a); cin.get(); return 0;}

转载地址:http://jtyna.baihongyu.com/

你可能感兴趣的文章
它们的定义AlertDialog(二)
查看>>
SQL Server-聚焦计算列或计算列持久化查询性能(二十二)
查看>>
ten sentences(31-40)
查看>>
设计模式(二)工厂方法(创建型)
查看>>
文本比较算法Ⅵ——用线性空间计算最大公共子序列(翻译贴)
查看>>
Winform系列——好用的DataGridview过滤控件(表格的高级搜索功能)
查看>>
KVM 介绍(1):简介及安装
查看>>
Java没有源代码的同步集合~
查看>>
各类总线传输速率【转】
查看>>
KafkaConsumer 长时间地在poll(long )方法中阻塞
查看>>
More than 100 ABAP Interview Faq's(2)
查看>>
Apache Solr查询语法
查看>>
Javascript中typeof instanceof constructor的区别
查看>>
jenkins忘记管理员登陆密码的补救措施
查看>>
[LeetCode] Sliding Window Maximum 滑动窗口最大值
查看>>
Loopup集合类笔记
查看>>
ylbtech-LanguageSamples-Unsafe(不安全代码)
查看>>
Unable to connect to any of the specified MySQL hosts.
查看>>
Android屏幕尺寸适配注意事项
查看>>
JAVA代码中加了Try...Catch的执行顺序
查看>>