版权声明:个人爱好,可随便转载 https://blog.csdn.net/qq_43528087/article/details/89046829
在C++语言中,指向类的成员的指针包括指向类的数据成员和成员函数这两种指针。
例如,有如下一个类:
class A
{
public:
int fun(int b){ return a*c+b; }
A(int i){ a = i; }
int c;
private:
int a;
};
1.定义一个指向类A的数据成员c的指针pc,格式如下:
int A::*pc = &A::c;
2.定义一个指向A的成员函数fun的指针pfun,格式如下:
int (A::*pfun)(int) = A::fun;
注:在使用这类指针时,需要首先指定A类的一个对象,通过这个对象来引用指针所指向的成员,将pc指针指向的数据成员c赋值8
A a;
a.*pc = 8;
分析下面程序的输出结果
#include <iostream>
using namespace std;
class A
{
public:
int fun(int b){ return a*c+b; }
A(int i){ a = i; }
int c;
private:
int a;
};
int main()
{
A x(8);
int A::*pc;
pc = &A::c;
x.*pc = 3;
int(A::*pfun)(int);
pfun = &A::fun;
A *p = &x;
cout << (p->*pfun)(5) << endl;
system("pause");
return 0;
}
在上面的代码中:
x.*pc = 3; 等价于 x.c = 3;
同理:(p->*pfun)(5); 等价于 p->fun(5);