📄 main.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 + -