在外部凋用Class中的private函数
在C++中,一般情况下Class中的private函数是不能在外部调用的,但通过下面这种特殊的方法可以突破这个限制。
1 #include <iostream> 2 3 using namespace std; 4 5 void End(); 6 7 class CTest 8 { 9 private:10 void __stdcall foo (int A) { cout<<"A = "<<A<<endl; };11 };12 13 int main(int argc, char *argv[])14 {15 atexit(End);16 17 //调用Class中的private函数18 CTest obj;19 20 unsigned long FooAddrPtr = 0;21 __asm22 {23 //得到CTest::foo偏移地址24 MOV EAX, OFFSET CTest::foo25 MOV [FooAddrPtr], EAX26 }27 28 //方法一29 void (__stdcall *FooPtr) (void* /*this*/, int /*A*/) = (void (__stdcall *) (void*, int)) FooAddrPtr;30 FooPtr(&obj, 9);31 32 //方法二33 union34 {35 unsigned long FooAddr;36 void (_stdcall *foo_ptr) (void *, int);37 }T;38 39 T.FooAddr = FooAddrPtr;40 T.foo_ptr(&obj, 9);41 42 return 0;43 }44 45 void End()46 {47 system("PAUSE");48 }
方法一是直接用函数指针转换,方法二是利用union中成员变量公用同一块内存从而进行强制转换。方法二还可用在很多需要类型强制转换的地方。
转载于:https://www.cnblogs.com/BlackBinary/archive/2011/07/28/2120362.html
在外部凋用Class中的private函数相关推荐
- java编程思想学习(3):Java中的private、protected、public和default的区别
(1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. (2)对于protected修 ...
- JAVA出现x可以在Point中访问private是什么意思 高手进
JAVA出现x可以在Point中访问private是什么意思 高手进 class Point{ private int x; private int y; public Point(int x,int ...
- PHP中private什么意思,PHP中的private和public还有protected的区别
最近H5项目繁忙,没空写PHP的学习心得.今天补上: 在接触PHP的最开始,我首先是看了PHP的源代码,PHP的源代码大致分四层:SAPI:接口层.main业务层.zend.以及扩展层EXT:这就是我 ...
- import是引进外部函数吗_你必须要知道的Python中的main函数
在很多开发语言中,都有一个叫做mian的主函数,这个函数一般都是程序的入口,当程序启动时,首先执行这个函数. 比如C#语言中的main函数长这个样子. static void Main(string[ ...
- java private 接口_java接口中 定义 private 私有方法
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...
- C++中的private protected public区别
标签: c++ 2012-07-10 10:06 5805人阅读 评论(0) 收藏 举报 分类: C++ Primer笔记(4) 当private,public,protected单纯的作为一个类中的 ...
- Java私有方法解释_java接口中 定义 private 私有方法
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...
- PHP Class中public,private,protected,static的区别
PHP Class中public,private,protected,static的区别 public:权限是最大的,可以内部调用,实例调用,可以被继承. protected:受保护类型,用于本类和继 ...
- java中的private public protected
1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直 ...
最新文章
- solr学习二(ExtractingRequestHandler)
- 数据挖掘实战(一):Kaggle竞赛经典案例剖析
- linux下安装php扩展模块gettext
- PuTTY 命令行改进 有效解决 中文乱码
- python STL分解
- 流式计算strom,Strom解决的问题,实现实时计算系统要解决那些问题,离线计算是什么,流式计算什么,离线和实时计算区别,strom应用场景,Strorm架构图和编程模型(来自学习资料)
- 介绍一个开源的SIP(VOIP)协议库PJSIP
- springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)
- Laravel 5.4: 特殊字段太长报错 420000 字段太长
- java工厂模式学习
- Linux替代Windows系统软件比拼
- mysql explain desc_MySQL中EXPLAIN结果的参数详解
- 构建自定义的同步工具
- 在Vs2013下编译FreeCAD0.17源码
- DJ设备市场现状及未来发展趋势
- H264___DCT蝶形算法____理解
- vue-cropper裁剪个人图像
- 支付宝支付原理以及测试接口获取支付url
- 计算机系统原理,实验三:bomblab,汇编详解
- Hbuilderx打包视频网站APP实现全屏横屏旋转的方法
热门文章
- JAVA十六进制数据转换
- 计算机桌面用什么实木板好,这才叫实木桌面,教你怎么做出来,拿去不谢
- 老毛桃pe装机工具备份系统
- iReport自定义快捷键
- NRF24LE1E与NRF24LE1G的区别
- cpu满载寿命_电脑寿命逐个谈:CPU、内存最长寿,反倒是这个配件最爱坏
- 景安服务器做网站seo怎样,虚拟主机和SEO优化的关系很大吗?景安
- KVG制作-【Arduino指纹解锁 智能家居系列-01】DIY自制的智能门禁,AS608指纹解锁+红外线遥控解锁。附演示视频。
- html5网页中加入播放器,6 个 HTML5 的多媒体播放器
- Git 入门教程,10000 字详解