在《C/C++回调方式系列之一》中我们总结了函数指针模式回调,这些回调当时比较原始,容易给人一种面向过程的编程的感觉,而且函数指针的格式比较繁琐,可读性相对差一点。本系列二将总结比较推荐的回调使用模式。
一、class接口回调模式
1. 定义接口
C++可以定义virtual纯虚类作为函数接口类,
例如定义 Introducer接口
class Introducer {
public:
// 析构函数要virtual,否则在动态绑定时容易引起内存泄漏
virtual ~Introducer() {
// do nothing.
};
virtual void selfIntroduce() = 0; // 接口函数
};
这里有个地方比较特别,就是析构函数定义为vitual,这是为了防止C++动态绑定时出现内存泄漏问题。这里就不展开讲解,具体可以看推荐链接
2. 定义调用接口的函数
void introduce(Introducer &person) {
person.selfIntroduce();
}