Jialong's Blog
沉潜 自由 追寻幸福
Cpp指向类成员的指针

指向类的普通成员的指针(非静态)

指向类成员函数的指针

指向类成员函数的指针不仅要匹配函数的参数类型和个数,以及返回值类型,还要匹配该函数指针所属的类类型

原因是非静态的成员函数必须绑定到一个类的对象或者指针上,才能得到被调用对象的this指针,然后才能调用指针所指的成员函数。

  • 声明:与普通函数作为区分,指向类的成员函数的指针只需要在指针前加上类类型即可:

    typedef 返回值 (类名::*指针类型名)(参数列表);
    
  • 赋值:只需使用类的成员函数地址赋值即可:

    指针类型名 指针名 = &类名::成员函数名;
    
  • 调用:针对调用的对象是对象还是指针,分别用.*->*进行调用:

    (类对象.*指针名)(参数列表);
    (类对象->*指针名)(参数列表);
    

指向类数据成员的指针

同理指向类成员函数的指针,只要判断以下两点是否一致即可:

  • 数据成员的类型
  • 所属的类类型

指向类的静态成员的指针

类的静态成员不依赖于具体对象,所有实例化的对象都共享同一个静态成员,即静态成员没有this指针的概念。

所以,指向类的静态成员的指针就是普通的指针

要使用(&类名::成员名)获取指向成员的指针,首先这个成员必须是对外可见的,即public的。


最后修改于 2021-12-28