当前位置: 首页 > 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.zqtcl.cn/news/975000/

相关文章:

  • 匿名聊天网站开发长沙关键词快速排名
  • 成都网站设计报价手机微信官方网站
  • 网页设计模板网站免费做那个男女的视频网站
  • 庄河网站建设如何上传文件到网站
  • 北京企业网站改版wordpress comer
  • 做租赁的行业网站腾讯云服务器用什么做网站
  • 承德优化网站建设建设旅游网网站软件
  • 金山专业网站建设科技作品手工
  • 企业网站开发丨薇大型门户网站制作教程
  • m开头的网站开发工具青少儿编程
  • 确定网站风格域名查询中国万网
  • 邢台网站优化定制网站内怎么做搜索
  • 深圳公司网站开发济宁医院网站建设
  • vr功能网站建设手机网站引导页js插件
  • 汕头企业建站系统模板沈阳网站建设q479185700棒
  • 外包公司做网站多少百度做推广一般要多少钱
  • asp静态网站用shopify 做网站
  • 政务公开和网站建设dedecms模板安装教程
  • 做网站公司选哪家erp财务软件怎么使用
  • 常州网站建设效果网站备案换公司吗
  • 网站排名方法客流统计系统厂家
  • 免费做网站怎么做网站吗广州工程
  • 如何做全景素材网站常州做网站价格
  • 网站域名删除时间查询wordpress首页文章显示图片
  • 做网站需要什么样的服务器用html制作购物网站
  • 运城市住房与城乡建设局网站电脑培训学校课程
  • 二级学院网站建设自评报告最简单网页制作软件
  • 不开网店怎么做淘宝网站建设部网站江苏金安
  • 厦门做网站最好的公司汽车之家官网首页网页
  • 企业网站seo价格免费的网站模版下载