指针还可以指向类的非静态成员,也就是数据成员和函数成员。
1 指向数据成员的指针
声明形式:
数据类型*类名::成员指针名;
赋值形式:
成员指针名=&类名::成员数据名;
访问形式:
对象名.*成员指针名;
对象指针->*成员指针名;
2 指向函数成员的指针
声明形式:
数据类型(*类名::成员指针名)(形参列表);
赋值形式:
成员指针名=&类名::成员函数名;
访问形式:
(对象名.*成员指针名)(形参列表);
(对象指针->*成员指针名)(形参列表);
注意:当类的成员函数是常成员函数时,在声明成员指针时也要在声明的时候加上const关键字。
还有,由于在类的定义中成员没有确定的地址,因此成员指针中存储的其实是成员的相对位置,成员指针只是表明了它指向哪一个成员,因此访问它们的时候必须用对象名,这样,它们就可以计算出确定的地址了。
以上就是我对于指向类的非静态成员的指针的一些认识。