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

时间:2024-04-15 05:08:46/人气:418 ℃

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

推荐

  • 1感人的爱情的说说390
  • 2梦见自己的车坏了463
  • 3动漫帅气人物美女图片137
  • 4五一劳动节节手抄报图片166
  • 5关于写给自己好朋友的话498
  • 6基准利率是什么_期货知识234
  • 7关于非主流情侣的个性签名326
  • 8党组书记述职评价273
  • 9一段珍贵的回忆游记 天山少年豫游记丨这段时光438
  • 10产品经理如何做到清晰的沟通表达?产品经理如何跟这5种角色沟通179
  • 首页/电脑版/地图
    © 2024 OONiu.Com All Rights Reserved.