类成员指针

本文详细介绍了C++中类成员指针的概念及其用法,包括如何定义和初始化类成员变量指针与成员函数指针,并展示了如何通过这些指针访问具体的类实例成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看代码:

class Student
{
public:
	Student(int i, string nm):schoolNumber(i),name(nm){}
	void getInfo()const
	{
		cout<<"name: "<<name<<endl
			<<"SchoolNumber: "<<schoolNumber<<endl;
	}
	void setInfo(string nm, int id)
	{
		name = nm;
		schoolNumber = id;
	}
	int schoolNumber;
	string name; 
};


int main()
{
	Student s1(001,"bird");
	Student* pStudent = &s1;
	string Student::* ps_Student = &Student::name;//定义类成员指针并初始化
	int Student::*pi_Student = &Student::schoolNumber;
	void (Student::*pf_Screen)()const = &Student::getInfo;//定义类成员函数指针并初始化
	void (Student::*pf_set_Screen)(string ,int) = &Student::setInfo;
	//使用类成员指针
	cout<<s1.*ps_Student<<endl;
	cout<<pStudent->*pi_Student<<endl;
	s1.getInfo();
	(s1.*pf_Screen)();
	(pStudent->*pf_Screen)();
	return 0;
}

以前,我们都是这样使用指针的:把一个指向int的指针初始化为一个类的某个具体对象的int成员的地址:

int* p = &s1.schoolNumber;

但这里的思路变了:我们有一个指针,这个指针指向的是某个类中的int类型的成员,把这个指针初始化为某个int型的类成员的地址。

让我想通过这个指针访问这个类的某个具体对象的类成员(包括成员函数时),通过.*或者->*来完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值