Cpp指向类成员的指针
指向类的普通成员的指针(非静态)
指向类成员函数的指针
指向类成员函数的指针不仅要匹配函数的参数类型和个数,以及返回值类型,还要匹配该函数指针所属的类类型。
原因是非静态的成员函数必须绑定到一个类的对象或者指针上,才能得到被调用对象的this指针,然后才能调用指针所指的成员函数。
-
声明:与普通函数作为区分,指向类的成员函数的指针只需要在指针前加上类类型即可:
typedef 返回值 (类名::*指针类型名)(参数列表);
-
赋值:只需使用类的成员函数地址赋值即可:
指针类型名 指针名 = &类名::成员函数名;
-
调用:针对调用的对象是对象还是指针,分别用
.*
和->*
进行调用:(类对象.*指针名)(参数列表); (类对象->*指针名)(参数列表);
指向类数据成员的指针
同理指向类成员函数的指针,只要判断以下两点是否一致即可:
- 数据成员的类型
- 所属的类类型
指向类的静态成员的指针
类的静态成员不依赖于具体对象,所有实例化的对象都共享同一个静态成员,即静态成员没有this指针的概念。
所以,指向类的静态成员的指针就是普通的指针。
要使用(&类名::成员名)
获取指向成员的指针,首先这个成员必须是对外可见的,即public
的。
最后修改于 2021-12-28