当前位置: 首页 > news >正文

七七网站建设成都房产网上政务大厅

七七网站建设,成都房产网上政务大厅,宁德城乡建设部网站首页,乐清网站定制公司哪家好https://www.cnblogs.com/rickyk/p/4238380.html 大家都知道C中类的成员函数默认都提供了this指针#xff0c;在非静态成员函数中当你调用函数的时候#xff0c;编译器都会“自动”帮你把这个this指针加到函数形参里去。当然在C灵活性下面#xff0c;类还具备了静态成员和静…https://www.cnblogs.com/rickyk/p/4238380.html 大家都知道C中类的成员函数默认都提供了this指针在非静态成员函数中当你调用函数的时候编译器都会“自动”帮你把这个this指针加到函数形参里去。当然在C灵活性下面类还具备了静态成员和静态函数即 class A { public:static void test(){m_staticA 1;} private:static int m_staticA;int m_a }; 此时你的test函数只能去访问m_staticA成员而不能去访问m_a。同学可能会问这算什么问题问题都是在应用场景中才能体现的我一开始也是不以为意直到我遇到了回调函数这个烦人的问题我才真正静下心来去考虑这个知识点。 先简单说下回调在座的应该都知道回调的含义在C中回调主要体现就是回调函数当然C中也有仿函数等其他用法抛开这些单纯在回调函数这个点上我们进行如下讨论。 由于C类的成员函数都隐含了this指针如果我直接注册比如 typedef void (A::*FunPtr)(); FunPtr p A::hello; p(); 此时程序会报错提示信息是你缺少一个this指针意味着你要真的想使用p你必须有一个分配好空间的实例才能来调用 typedef void (A::*FunPtr)(); FunPtr p A::hello;A a; A *pA new A();(a.*p)(); (pA-*p)(); 当然如果仅仅是对C的类静态函数进行回调函数注册你是不需要考虑this指针的 typedef void (A::*FunPtr)(); FunPtr p A::test; p(); 但问题就是你此时的静态函数是不能拥有你的成员变量的看到了吧问题来了。面对这种需求我们就真正应该静下心来好好想想究竟如何才能让静态函数去访问非静态成员变量这个问题了。 方法一 有一个很取巧的办法就是在静态函数的形参表里加上实例的地址也就是 class A { public:static void test(A *a){a-m_a 1;}void hello(){} private:static int m_staticA;int m_a }; 这样在你回调函数的时候你可以通过这个来让本身不能访问成员非静态变量的静态函数太拗口来访问非静态成员变量。 方法二 其实这个方法在GLIB中用的很多就是放上全局变量地址即 A g_a;class A { public:static void test(){g_a.m_a 1;}void hello(){} private:static int m_staticA;int m_a }; 这种方法我们了解就好全局变量我们并不推荐。 方法三 大家都知道静态成员函数不能访问非静态成员但别忘了他们可以访问静态成员也就是说如果我们的这个类是个单例我们完全可以在创建的时候把this指针赋值给那个静态成员然后在静态成员函数内部就可以放心大胆的使用了。 class A { public:A(){m_gA this;}static void test(){m_gA.m_a 1;}void hello(){} private:static int m_staticA;static A *m_gA;int m_a }; 方法四 和方法一比较像但他的方向思想更多的是针对内存块这个概念意思就是在静态函数的形参比加上一个void *的内存首地址然后在内部做转换 class A { public:static void test(void *pData){A *a (A *)pData;a-m_a 1;}void hello(){} private:static int m_staticA;int m_a };A a; test(a); 如上我整理了4种方法当然方法还有很多其实绕了这么大远路我们的希望就是不破坏回调函数整洁的函数接口加上自己的实例指针而做的妥协如果你更喜欢通过改变接口或者通过用Java类似的interface方式来实现那也没有问题这里主要就是提供给大家一个思路C确实很灵活我们要用好这把双刃剑
http://www.pierceye.com/news/975000/

相关文章:

  • 网站YYQQ建设o2o型网站
  • 给客户做网站 赚钱吗赣州省住房和城乡建设厅网站
  • 营销优化型网站怎么做手机app网页制作
  • 上海网站建设服wordpress友情链接排序
  • 沈阳市和平区网站建设编程课适合多大孩子学
  • 东阳网站优化懒人图库
  • 马关县网站建设专注营销型网站建设
  • 微信公众号公众平台太原seo关键词优化
  • 沈阳网站建设方案二级网站怎样被百度收录
  • 厦门数字引擎 怎么打不开网站youku网站开发技术
  • 中小企业网站建设论文郑州网站服务公司
  • 工信部网站备案验证码文化传媒网站封面
  • 境外做网站网站百度代运营
  • 南京学校网站建设策划手机网站默认全屏
  • 东莞公司网站策划万网买网站
  • 建筑网站视频大全做外汇网站卖判刑多少年
  • 手机网站菜单网页怎么做东莞网站优化方案
  • 公众号免费素材网站wordpress无法开始安装
  • 建设银行互联网网站首页网站备案 视频
  • 免费优化网站建设做app和网站哪个比较好用
  • 韩国最牛的设计网站大全网站设计的尺寸
  • 一家专门做特卖的网站类似非小号的网站怎么做
  • 怎么建一个网站出口外贸交易平台
  • iapp用网站做软件代码徐州网络推广公司排名
  • 设计之路 网站wordpress自定义字段火车头
  • 用什么服务器做盗版小说网站吗邓州十九张麻将微信群app开发公司
  • 高端网站设计找哪个公司WordPress 移动文件夹
  • 做网站的资料新媒体网站建设十大的经典成功案例
  • 西安移动网站建设丹东做网站的
  • 石家庄网站建设优化建湖做网站哪家最好