当前位置:蜗牛素材网>综合资讯>科技>正文

c编程指针和数组:成员变量指针及成员函数指针

人气:278 ℃/2024-04-15 05:08:46

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;}

搜索更多有关“c编程指针和数组:成员变量指针及成员函数指针”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
本网站部分内容、图文来自于网络,如有侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2008-2024 蜗牛素材网 All Rights Reserved. 手机版