指向类的成员的指针

版权声明:个人爱好,可随便转载 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);

猜你喜欢

转载自blog.csdn.net/qq_43528087/article/details/89046829