⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 很好的 关于C++的例子 我想你要是可以把上面的例子都做好了 看明白了 关于函数指针这一部分你应该学的很好了
💻 CPP
字号:
#include "stdio.h"
#include "iostream.h"
class CPoint
{
public:

	 void plus(double x_, double y_)
	 {
		 cout<<"(x+y)="<<x_+y_<<endl;
	 }
	 void minus(double x_, double y_)
	 {
		 cout<<"(x-y)="<<x_-y_<<endl;
	 }
	 void mul(double x_, double y_)
	 {
		 cout<<"(x*y)="<<x_*y_<<endl;
	 }
	 void dev(double x_, double y_)
	 {
		 cout<<"(x/y)="<<x_/y_<<endl;
	 }

	 virtual void move(double x_, double y_)
	 {
		 cout<<"CPoint Move"<<endl;
	 }

	 double x;
	 double y;
};

void Oper(CPoint* pPoint, void (CPoint::*pfun)(double x_, double y_), int x, int y)
{
	(pPoint->*pfun)(x, y);
}

class CPoint3d : public CPoint
{
	public:

	void move(double x_, double y_)
	{
		cout<<"CPoint3d Move"<<endl;
	}
};

int main(int argc, char* argv[])
{
	CPoint pt;
	void (CPoint::*pfun)(double x_, double y_);
	int offset = 0;

	pfun = &CPoint::plus;
	offset = (int&)pfun;
	(pt.*pfun)(10, 10);
	Oper(&pt, pfun, 10, 10);

	pfun = &CPoint::minus;
	offset = (int&)pfun;
	(pt.*pfun)(10, 10);
	Oper(&pt, pfun, 10, 10);
 
	pfun = &CPoint::move;
	offset = (int&)pfun;
	(pt.*pfun)(10, 10);
	Oper(&pt, pfun, 10, 10);

	CPoint3d pt3d;
	void (CPoint3d::*p3dfun)(double x_, double y_);
	p3dfun = &CPoint3d::move;
	(pt3d.*p3dfun)(10, 10);

	p3dfun = pfun; //正确
	//pfun = p3dfun; //错误
	pfun = (void (CPoint::*)(double, double))p3dfun;

	Oper(&pt3d, (void (CPoint::*)(double, double))p3dfun, 10, 10);

	p3dfun = &CPoint3d::move;
	Oper(&pt, (void (CPoint::*)(double, double))p3dfun, 10, 10);
 
	return 0;
}

⌨️ 快捷键说明

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