我可以在函数指针和子类对象之间进行选择。为了清楚起见,假设我必须通知某个对象某些动作(例如计时器);参考以下两个选择(演示目的的非常基本的代码):
版本 1
typedef void TimerCallback(void *args);
class Timer{
public:
Timer();
~Timer();
void schedule(TimerCallback *callback, void *args, long timeout)=0;
void cancel();
};
版本 2
class TimerTask{
public:
TimerTask();
virtual ~TimerTask();
void timedout()=0;
};
class Timer{
public:
Timer();
virtual ~Timer();
void schedule(TimerTask *callback, long timeout)=0;
void cancel();
};
哪一种是标准的 C++ 方式,哪一种是高效的?如果您在这方面有任何其他建议,请告诉我。
如果我在这方面不清楚,请告诉我。
谢谢