demo_object_pointer_3.cpp

来自「对于一个初涉VC++的人来书」· C++ 代码 · 共 37 行

CPP
37
字号

//***************************************************
//指向类的成员的指针
//指向数据成员的指针: <类型说明符><类名>::*<指针名>=&<类名>::<公有数据成员名>;
//指向成员函数的指针: <类型说明符>(<类名>::*<指针名>)(<参数表>)=<类名>::<公有函数成员名>;
//***************************************************

#include <iostream.h>

class Sample
{
public:
	Sample(int i) { a=i; }
	int fun(int b) { return a*c+b; }
	int c;

private:
	int a;
};

void main()
{
	Sample A(2);
	Sample *p=&A; //声明指向类的对象的指针变量并初始化

	int Sample::*pc;  //声明类数据成员指针变量
	pc=&Sample::c; //给类数据成员指针变量赋值
	A.*pc=3; //等价于 A.c=3

	int (Sample::*pfun)(int); //声明类成员函数指针变量
	pfun=Sample::fun; //给类成员函数指针变量赋值

	cout<<"(p->*pfun)(4)="<<(p->*pfun)(4)<<endl;
	//等价于 A.fun(4)
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?