类成员指针的简单认识

对类成员的简单认识
··在c++中,除了可以定义对象外,还可以定义成员指针。类成员指针包括类数据成员指针和类成员函数指针。
·
类成员成员指针
类数据成员指针的定义格式如下:
类型 类名::指针名
由于类不是在运行存在的对象,因此在使用类成员数据成员指针时,需要首先指定一个数据成员,然后通过类的对象来引用指针所指向的成员。
·
分析如下程序结果

#include<iostream>
using namespace std;
int s = 0;
class my
{
public:
	void disp()
	{
		cout << "m=" << m << endl;
		cout << "n=" << n << endl;
	}
	int m, n;
};
int main()
{
	int my::* p ;
	p= &my::m;//类数据成员指针
	my a;
	a.*p = 10;
	p = &my::n;
	a.*p = 20;
	a.disp();
	return 0;
}

在这里插入图片描述
【解析】:上述结果首先定义了一个类数据成员指针,并指向类my的数据成员吗,执行“a.*p=10”语句相当于给对象a的数据成员m赋值10.然后将p指向类my的数据成员n,执行“a.*p=20”相当于给对象a的数据成员n赋值20。
·
·
·
类成员函数指针
(1)指向类成员函数指针的定义格式如下:
类型(类名::*指针名)(参数表)
·
(2)给类成员函数指针 赋值 的格式如下:
指向函数的指针名=函数名
·
(3)程序中使用指向函数的指针调用函数的格式:
(*指向函数的指针名)(实参表)
·
【经典例题】分析如下程序

#include<iostream>
using namespace std;
int s = 0;
class my
{
	int m, n;
public:
	void setm(int i)
	{
		m = i;
	}
	void setn(int i)
	{
		n = i;
	}
	void disp()
	{
		cout << "m=" << m << "n=" << n << endl;
	}
};
int main()
{
	void (my::*p)(int);//定义类成员函数指针
	my a;
	p = &my::setm;
	(a.*p)(10);
	p = &my::setn;
	(a.*p)(20);
	a.disp();
	return 0;
}

在这里插入图片描述
解析:上述程序中,定义了一个类成员函数指针p,通过执行“p=my::setm”语句使该指针指向setm,"(a.*p)(10);"语句相当于执行“a.setm(10)”,使对象a的数据成员m=10.
通过执行“p=my::setn”语句是该指针指向setn,“(a.*p)(20)”语句相当于执行“a,setn(10)”,使该对象a的数据成员n=20。
·
·
·
——文章转载至文本资料,仅用于个人学习
——2021年4月20日19:55

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值