高手帮忙解释一下这个程序吧!谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/15 14:21:27
#include "iostream.h"
class Sample
{
int x;
int y;
public:
Sample(int a,int b)
{
x=a;x=b;
}
int getx() {return x;}
int gety() {return y;}
};
void main()
{
int (Sample::*fp)(); //对这些地方的定义不明白
Sample s(2,5);
fp=Sample::getx;
int v=(s.*fp)();
fp=Sample::gety;//还有下面
int t=(s.*fp)();
cout<<"v="<<v<<" t="<<t<<endl;
}

int (Sample::*fp)();中的Sample就是上面的类名,而::表示后面的定义是在此类中的,
去掉此层就是 int (*fp)();这是个函数指针定义,意思是指fp是一个指向返回值是int型的 参数为空的函数,
fp=Sample::gety;中的Sample意义如上,
int t=(s.*fp)();表示t就是函数{s.*fp)();的结果
因为此类中含有一个名字是Sample的函数,所以要用到上面的方式义区别。
希望你能明白!

涉及知识点:函数的指针
int (Sample::*fp)();是声明指向Sample成员函数的指针;
后面就是把具体的函数地址赋给这个指针并且调用