C++的成员指针

来源:互联网 发布:守望先锋源氏cos淘宝网 编辑:程序博客网 时间:2024/06/05 09:51

C++的成员指针平时不怎么用,虽然是冷僻的知识,但是还是值得去了解下。成员指针与一般指针的最大区别就是类内部是没有地址的,所以成员指针要理解为“类中偏移量”。

还是先贴出代码,比较好说。

class Simple{public:    int a,b;    int f(float) const{return 1;}    int f(int) const{return 1;}};int (Simple::*fp)(float)const;int main(){    Simple s;    int Simple::*pmInt = &Simple::b;    s.*pmInt = 4; //s.b = 4    fp = &Simple::f;    (s.*fp)(1.0); //s.f(1.0)    Simple *sp = &s;    sp->*pmInt = 4; //sp->b = 4;    (sp->*fp)(1.0); //sp->f(1.0)}

1,成员变量指针,int Simple::*pmInt = &Simple::b这是把Simple的b成员变量的类地址偏移量给了pmInt然后s可以通过这个指针变量来访问自己的成员变量b
2,成员函数指针,int (Simple::*fp)(float)const是函数指针的定义,在main函数里,需要对其赋值为成员函数的地址。

0 0