指向类成员的指针
C++扩展了指针在类中的使用,使其可以指向类成员(数据成员和函数成员),这种
行为是类层面的,而不是对象层面的。
#include <iostream>
using namespace std;
class A
{
public:
int x;
void foo()
{
cout<<x<<endl;
}
};
int main()
{
A a;
A *p = &a;
p->foo();
return 0;
}
指向非静态数据成员的指针在定义时必须和类相关联,在使用时必须和具体的对象
关联。
由于类不是运行时存在的对象。因此,在使用这类指针时,需要首先指定类的一个
对象,然后,通过对象来引用指针所指向的成员。
声明
<数据类型><类名>::*<指针名>
初始化
<数据类型><类名>::*<指针名> [=& <类名>::<非静态数据成员>]
解引用
<类对象名>.*<指向非静态数据成员的指针>
<类对象指针>->*<指向非静态数据成员的指针>
#include <iostream>
using namespace std;
class Student
{
public:
Student(string n, int nu):name(n),