成员指针
指向对象的成员的指针(pointer to member of object) a.*b
指向指针的成员的指针(pointer to member of pointer) a->*b
1,pointer to member of object,首先我们要知道,member of object指的是a.b。所以,这个pointer to member of object指的是,指向a.b的指针。
2,中文名字一般翻译的是,指向对象的成员的指针。这里面很奇怪的是,对象的成员是什么,是成员对象吗?对象的成员和成员对象有什么区别吗?一般来说,说对象的成员而不是成员对象,是因为这里指针指向的是一种成员的类型,而不是成员本身。
3,a.*b是不可以重载的,a->*b是可以重载的。
成员指针的使用
说起指向a.b的指针,那么,我们很容易想到&a.b,例如
#include <iostream>
using namespace std;
struct Student
{
int age;
};
int main()
{
Student s = {18};
int * p = &s.age;
cout << s.age << endl;
cout << *p << endl;
}
这是我们需要的吗?通过*p,就可以取得保存的a.b的值了,显然不是我们需要的成员指针。那么成员指针是什么呢?