范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C详解类成员指针数据成员指针和成员函数指针及应用场合

  对于类对象对于成员的调用,需要有类对象的限定,一方面是一个类命名空间,另一方面用于传递隐含的this指针。
  数据和函数,包括类对象的数据成员和成员函数,都是可以寻址的,自然也可以定义一个指针,使其指向类成员或成员函数,然后通过指针来访问类的成员。这包括指向属性成员的指针和指向成员函数的指针。1 指向普通变量和函数的指针变量
  关于数据的指针变量存储了具有特定数据类型的一个内存空间的首地址,确定了其指向的目标对象的蓝图,核心是由数据类型确定了目标对象所需内存空间大小,数据类型的编码和解码方式。关于代码的指针变量是指指向函数的指针变量,同样是首地址,类型是由函数签名所确定的类型,以及代码的指令集编码及读取和译码方式。#include  using namespace std; void func(int a) {     cout<

2 指向类数据成员和成员函数的指针

2.1 指向类数据成员的指针

2.1.1 定义

<数据类型><类名>::*<指针名>
  为了区别于普通指针变量,多了一个类名作用域限定,也显示了与类及类成员的相关性。
  2.1.2 赋值&初始化<数据类型><类名>::*<指针名>[=&<类名>::<非静态数据成员>]
  指向非静态数据成员的指针在定义时必须和类相关联,在使用时必须和具体的对象关联。
  2.1.3 解引用
  由于类不是运行时存在的对象。因此,在使用这类指针时,需要首先指定类的一个对象,然后,通过对象来引用指针所指向的成员。<类对象名>.*<指向非静态数据成员的指针> <类对象指针>->*<指向非静态数据成员的指针>
  示例代码:    Student s1("zhangsan",1002);     string Student::*ps = &Student::name;       // 数据成员指针     cout<*ps<(<类名>::*<指针名>)(<参数列表>)
  为了区别于全局函数指针,多了一个类名作用域限定,也显示了与类及类成员的相关性。
  2.2.2 赋值&初始化<数据类型>(<类名>::*<指针名>)(<参数列表>)[=&<类名>::<非静态成员函数>]
  2.2.3 解引用
  由于类不是运行时存在的对象。因此,在使用这类指针时,需要首先指定类的一个对象,然后,通过对象来引用指针所指向的成员。(<类对象名>.*<指向非静态成员函数的指针>)(<参数列表>) (<类对象指针>->*<指向非静态成员函数的指针>)(<参数列表>)
  示例代码:#include  #include  using namespace std; class Student { public:     Student(string n, int nu):name(n),num(nu){}     void dis()     {         cout<<"name "<*ps<*pf)();         getchar();     return 0; }3 指向类静态成员的指针
  指向非静态成员时,必须用类名作限定符,使用时则必须用类的实例作限定符。指向静态成员时,声明时则不需要使用类名作限定符。(当然静态成员做右值也需要类名限定)#include  using namespace std; class A { public:     static void print();     static int data;      }; void A::print() {     cout< using namespace std; class Widget { public:     Widget()     {         fptr[0] = f;         fptr[1] = g;         fptr[2] = h;         fptr[3] = i;              }     void select(int idx, int val)     {         if(idx<0 || idx>cnt) return;         (this->*fptr[idx])(val);     }     int count()     {         return cnt;     } private:     void f(int val){cout<<"void f() "<  class CS{ public:     void callback(int n)     {         // ……         printf("处理逻辑1, %d ",n);         // ……     }     void callback2(int n)     {         // ……         printf("处理逻辑2, %d ",n);         // ……     }     void callee(void(CS::*csPF)(int))   // 类成员函数指针     {         // ……         printf("按不同的处理逻辑操作 ");         (this->*csPF)(12);              // 调用成员函数指针与调用普通函数指针不同         // ……     }     void caller() // caller calls callee that calls callback     {         // ……         callee(callback);         // ……     }     void caller2()     {         // ……         callee(callback2);         // ……     }     static void sm_func(int n)     {         printf("我是一静态成员函数%d ",n);     }     friend void userCSMemFunc(CS &cs, void(CS::*csPF)(int)); private:     int csi; }; void userCSMemFunc(CS &pcs, void(CS::*csPF)(int)) {     pcs.csi = 256;     (pcs.*csPF)(pcs.csi); } void userCSMemFunc2(CS &pcs, void(CS::*csPF)(int)) {     (pcs.*csPF)(128); } int main() {     CS cs, *pcs;     cs.caller();     cs.caller2();     typedef void(CS::*csPF)(int);     csPF cspf = &CS::callback;     (cs.*cspf)(24);             // 调用成员函数指针与调用普通函数指针不同     (pcs->*cspf)(48);     //void(*pf)(int) = cspf; // cannot convert from "void (__thiscall CS::*)(int)"                                                //to "void (__cdecl *)(int)"     void(*pf)(int) = CS::sm_func;     pf(256);     userCSMemFunc(cs,CS::callback2);     userCSMemFunc2(cs,CS::callback2);     void(*pff)(CS &cs, void(CS::*csPF)(int)) = userCSMemFunc;     pff(cs,CS::callback2);     getchar();     return 0; } /* 按不同的处理逻辑操作 处理逻辑1, 12 按不同的处理逻辑操作 处理逻辑2, 12 处理逻辑1, 24 处理逻辑1, 48 我是一静态成员函数256 处理逻辑2, 256 处理逻辑2, 128 处理逻辑2, 256 */
  https://blog.csdn.net/yyx112358/article/details/78515420
  -End-

超实用!这是我见过最全面的Python入门教程,新手小白不要错过大学毕业后相当迷茫,不知道做些什么,于是学长推荐去学Python,当年2w买的python教程,三个月的时间成功上岸,现在用不着了,送给有缘人,不要钱,只愿你和我一样上岸本套视频共一部手机最长能用几年?遇到这4种情况,你还是换部新手机吧现在,智能手机在不断的发展,那么我们手中的智能手机,最长能用几年?毕竟就现在的手机的发展,我们不可能也没必要每出一个新机型,就选择更换新手机。一般情况下,安卓手机的使用寿命大约三年美国对中国使用顶级网络武器证据曝光美国国安局最强大互联网攻击工具曝光!你的社交账户很可能在美国监控之下22日,360政企安全集团首次对外界完全披露美国国家安全局(NSA)针对中国境内目标所使用的代表性网络武器Qua蚂蚁财富金选投顾调整优化6家机构更新投顾策略基金池及名称等信息将上线蚂蚁投顾管家21世纪经济报道记者姜诗蔷北京报道蚂蚁财富金选投顾调整后将重新上线。3月23日,兴证全球基金南方基金中欧财富财通证券广发基金嘉实财富6家公司发布了调整旗下相关基金投顾策略的公告,其持斯拉汽车由俄乌战争联想到的可怕之处马斯克的星链系统已经在俄乌战争中为乌克兰提供了大量战场信息情报,乌军也通过情报知晓俄军的动态部署,为乌军作战决策提供了重要参考。我想说的是,目前特斯拉汽车的自动辅助驾驶系统已达到L英伟达变软公布多款开发工具,瞄准科研游戏开发场景记者彭新编辑AI芯片巨头英伟达变软,发布多项企业级软件产品。3月23日,在游戏开发者大会(GDC)和GPU技术大会(GTC)上,英伟达公布多款开发工具,瞄准游戏科研工业需求。这些工互联网和游戏研究报告2019年中国网民搜索引擎使用情况研究报告。pdf2020年度互联网企业信息科技风险治理现状调研报告互联网协会。pdf2021中国网络视听发展研究报告。pdf2021产业互联网实践腾讯Q4财报电话会不会启动股票回购计划,游戏版号停发是暂时的3月23日周三,腾讯控股发布2021财年第四季度业绩及全年财报。其美股ADR盘初一度跌8。7,随后跌幅收窄至不足4。这主要是由于第四季度营收增速创新低,非国际财务报告准则(NonI协昌科技功率芯片大客户频繁变更研发费率不及3两起专利纠纷未决长江商报消息长江商报记者张璐已经八次递交招股书,却很难通过考核的协昌科技,终于迎来了曙光。3月17日,江苏协昌电子科技股份有限公司(简称协昌科技)创业板首发上会获得通过。长江商报记iPhone13ProMax与iPhone12ProMax详细对比区别一目了然iPhone13ProMax是苹果迄今为止发布的最好的iPhone手机,这得益于其升级的摄像头系统超大屏幕和出色的性能。这绝对比iPhone12ProMax更上一层楼,这一点是显而小米米家滚筒洗衣机10Kg发布DD直驱电机首发仅1479元3月21日消息,小米发布了米家滚筒洗衣机10Kg,将于明天(3月22日)10点开启预售,原价1699元,首发到手价仅1479元。该洗衣机有三大卖点1直驱电机源头降噪洗涤更安静2除菌
小米11ultra不推荐的理由,我只说真实的大家好,本人的手机买了已经15天告诉你们真实感受黑粉请绕道为什么说我不推荐这款手机呢?我的不推荐理由如下1电池与它的续航完全不匹配,我可以很负责任的告诉你们2照相功能非常强大,但是12月开启三星Galaxy设备将获得Android12更新推送三星用户对Android12的更新感到高兴,主要的操作系统升级将伴随OneUI4。0,将带来一些新功能和许多外观上的变化,这将刷新用户对三星Galaxy设备的感官。那么对应的Gal联想小新Pad正式推送Android11横屏也能刷抖音7月5日上午10点,联想多款平板正式推送ZUI12。5。目前已支持机型共5款YOGAPadPro小新PadPro2021小新PadPlus小新PadPro小新Pad。此版本更新为A2021锐龙5600X配RTX2060游戏电脑配置搭配建议及配置单推荐游戏的流畅度主要就是看画面输出的帧数,帧数越高即游戏流畅度就越好。而决定游戏帧数的硬件主要就是cpu和显卡,将有限的预算合理分配给这两个硬件就能组装出一台高性性能的游戏主机,下面电一汽红旗送车,是对奥运健儿的肯定,也算是营销,能带火红旗H9吗2020东京奥运会已经落下帷幕,在本届奥运会当中,中国奥运健儿共斩获38金32银18铜的骄人战绩,而一汽红旗为了表彰为国争光的奥运健儿们,决定赠送每一位金牌得主一辆红旗H9,银牌和拒绝双离合!天逸C5标配8AT变速箱,赛级底盘调校,目前优惠近2万目前双离合变速箱已经成为了主流,毕竟它结构简单,制造成本低,对于车企来说,这也算变相提高利润了,而在车企面前,消费者算是弱势群体,只能选择接受,不过双离合变速箱远没有达到完全统治的10。98万起售,丰田卡罗拉三缸版值得入手吗?一直以来,消费者对三缸发动机的争议都很大,其中大多数人会表现出拒绝的态度,不过目前市面上搭载三缸发动机的车型还真不少,就连丰田卡罗拉都推出了三缸车型,要知道它可是月销量将近3万台的12。68万起售,捷达VS7黑锋版上市,值得入手吗?日前,捷达VS7新增了两款车型,定名为黑锋版,价格区间为12。6813。68万,分别是自动悦享版和自动荣耀版,新车型的最大变化就在于外观加入了很多黑化设计,相比普通版车型更加年轻时半年大卖25。6万辆,日产轩逸算是紧凑型车市场的ampampquot六边形战士ampampquot吗?中国乒乓球运动员马龙被日本媒体称为六边形战士,原因在于马龙的力量速度技巧发球防守经验六个方面的实力都能得到满分,而评价一款车也恰好需要从外观动力配置内饰舒适性空间等六个主要方面入手全新起亚嘉华即将上市,预计23万起售,别克GL8又该被点名了!近日,我们从相关渠道获悉,全新国产起亚嘉华将会在8月27日开幕的成都车展上亮相,作为一款中大型MPV,肯定又少不了和这个级别的天花板别克GL8对比一番,不过胜算又有多少呢?毕竟大众靠颜值就成功了一半,而且起售价还不到11万,评全新长安CS55PLUS俗话说得好,看人先看脸,虽说我们不能通过外观去评判一个人的内在,但颜值高的人确实会收获更多的关注,其实这个规律能够适用任何事物,比如一辆汽车的颜值很高,那么它必定会得到消费者更多的