c编程指针和数组:成员变量指针及成员函数指针
1.成员变量指针
用法:
成员变量指针定义: 类型名(类名::*指针名) = &类名::类的成员变量名
成员变量指针调用: 对象名.*成员变量指针名
C 中指向成员变量的指针其实是一个相对于类的偏移量。如图:
#include<iostream>using namespace std;class A{public: int x;};typedef int A::*MemberPointer;//整型的成员变量指针int main(){ MemberPointer pV;//定义一个成员变量指针pV pV = &A::x;//指向A类的变量x A a; a.*pV=1;//a.*pV可以理解为A的首地址 相对地址 //等价于a.x==1 cout<<a.*pV<<endl; cout<<(&a)->*pV<<endl;//&a为对象指针 return 0;}
2.成员函数指针
成员函数指针相当于成员变量指针与函数指针的组合。
用法:
成员函数指针定义: 类型名 (类名::*指针名)(参数类型表) = &类名::类的成员函数名
成员函数指针调用: (对象名.*成员函数指针名)(实参表)
#include<iostream>using namespace std;class Person{public: void sayHello(){ cout<<"Hello,I am a person."<<endl; }};typedef void (Person::*PersonMemberFunctionpointer)();//定义成员函数指针类型int main(){ Person someone; PersonMemberFunctionpointer pp;//声明一个成员函数指针 pp = &Person::sayHello;//指向类成员sayHello() (someone.*pp)();//通过对象调用函数 ((&someone)->*pp)();//通过对象指针调用函数 return 0;}
#include<iostream>using namespace std;class Person{public: void sayHello(){ cout<<"Hello,I am a person."<<endl; }};void runFuncName(Person *obj,void (Person::*func)()){ (obj->*func)();}typedef void (Person::*PersonMemberFunctionpointer)();int main(){ Person someone; PersonMemberFunctionpointer pp; pp = &Person::sayHello; (someone.*pp)(); runFuncName(&someone,pp); return 0;}
- 11-23为什么固态硬盘特别慢?同样是固态硬盘为什么我的这么慢
- 05-02和平精英最新空投刷新点:和平精英新地图遗迹体验
- 10-23儿童手工制作风筝的方法教程:秋季手工创意亲子手工
- 03-21每天一个套路对象的表情包 表情包,交个朋友不
- 12-20滴眼液什么时候使用最好?这篇文章帮您解锁正确
- 12-15河北8市最新限行:赶紧扩散河北多市限行有变
- 01-22河北最出名6个县:河北第一市河北第一县
- 01-17韩国男星被爆丑闻,十余名玩咖男星遭点名
- 03-26跨境电商四种监管模式 跨境小课堂,NO.44
- 01-23安徽除了芜湖还有哪个城市?安徽适合定居的2个城市
- 05-16重庆武隆旅游一日游报价:重庆精品纯玩3日游报团行程
- 02-26刀塔自走棋现版本阵容搭配,刀塔自走棋8人口完美成型
- 09-27竞品直播数据分析:竞品分析,B站
- 01-10平凡的世界所阐述的精神:平凡的世界展现出的真
- 04-04沈阳故宫初雪氛围感 沈阳故宫迎来2023年入冬的第一场雪
- 04-01日照长途汽车班次:日照汽车站最新班次时刻表
热门
推荐
- 1对监理的表扬信范文223
- 2火灾逃生互救和自救的方法409
- 3高中生物学习的核心知识点分析186
- 4公共卫生间管理制度418
- 5再来一次,我要对你说出那句话376
- 6青春和谐校园演讲稿196
- 7做最真实的自己作文282
- 8推荐安全自查报告合集8篇236