在外部凋用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中成员变量公用同一块内存从而进行强制转换。方法二还可用在很多需要类型强制转换的地方。

posted on 2011-07-28 21:56 黑色二进制 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/BlackBinary/archive/2011/07/28/2120362.html

在外部凋用Class中的private函数相关推荐

  1. java编程思想学习(3):Java中的private、protected、public和default的区别

    (1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. (2)对于protected修 ...

  2. JAVA出现x可以在Point中访问private是什么意思 高手进

    JAVA出现x可以在Point中访问private是什么意思 高手进 class Point{ private int x; private int y; public Point(int x,int ...

  3. PHP中private什么意思,PHP中的private和public还有protected的区别

    最近H5项目繁忙,没空写PHP的学习心得.今天补上: 在接触PHP的最开始,我首先是看了PHP的源代码,PHP的源代码大致分四层:SAPI:接口层.main业务层.zend.以及扩展层EXT:这就是我 ...

  4. import是引进外部函数吗_你必须要知道的Python中的main函数

    在很多开发语言中,都有一个叫做mian的主函数,这个函数一般都是程序的入口,当程序启动时,首先执行这个函数. 比如C#语言中的main函数长这个样子. static void Main(string[ ...

  5. java private 接口_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  6. C++中的private protected public区别

    标签: c++ 2012-07-10 10:06 5805人阅读 评论(0) 收藏 举报 分类: C++ Primer笔记(4) 当private,public,protected单纯的作为一个类中的 ...

  7. Java私有方法解释_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  8. PHP Class中public,private,protected,static的区别

    PHP Class中public,private,protected,static的区别 public:权限是最大的,可以内部调用,实例调用,可以被继承. protected:受保护类型,用于本类和继 ...

  9. java中的private public protected

    1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直 ...

最新文章

  1. solr学习二(ExtractingRequestHandler)
  2. 数据挖掘实战(一):Kaggle竞赛经典案例剖析
  3. linux下安装php扩展模块gettext
  4. PuTTY 命令行改进 有效解决 中文乱码
  5. python STL分解
  6. 流式计算strom,Strom解决的问题,实现实时计算系统要解决那些问题,离线计算是什么,流式计算什么,离线和实时计算区别,strom应用场景,Strorm架构图和编程模型(来自学习资料)
  7. 介绍一个开源的SIP(VOIP)协议库PJSIP
  8. springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)
  9. Laravel 5.4: 特殊字段太长报错 420000 字段太长
  10. java工厂模式学习
  11. Linux替代Windows系统软件比拼
  12. mysql explain desc_MySQL中EXPLAIN结果的参数详解
  13. 构建自定义的同步工具
  14. 在Vs2013下编译FreeCAD0.17源码
  15. DJ设备市场现状及未来发展趋势
  16. H264___DCT蝶形算法____理解
  17. vue-cropper裁剪个人图像
  18. 支付宝支付原理以及测试接口获取支付url
  19. 计算机系统原理,实验三:bomblab,汇编详解
  20. Hbuilderx打包视频网站APP实现全屏横屏旋转的方法

热门文章

  1. JAVA十六进制数据转换
  2. 计算机桌面用什么实木板好,这才叫实木桌面,教你怎么做出来,拿去不谢
  3. 老毛桃pe装机工具备份系统
  4. iReport自定义快捷键
  5. NRF24LE1E与NRF24LE1G的区别
  6. cpu满载寿命_电脑寿命逐个谈:CPU、内存最长寿,反倒是这个配件最爱坏
  7. 景安服务器做网站seo怎样,虚拟主机和SEO优化的关系很大吗?景安
  8. KVG制作-【Arduino指纹解锁 智能家居系列-01】DIY自制的智能门禁,AS608指纹解锁+红外线遥控解锁。附演示视频。
  9. html5网页中加入播放器,6 个 HTML5 的多媒体播放器
  10. Git 入门教程,10000 字详解