8. 函数调用运算重载
函数对象
函数对象是指重载了 () 运算符的对象,此类对象能像函数一样调用,因此叫函数对象。
如:
MyClass a;
a(666); // a 必须重载 () 运算符
示例
创建一个类 Translater,此类的对象会保存一个中间词。然后调用此对象并给出两个参数。结果打印 第一个参数 中间此 第二个参数 这样的内容。
// filename: op_call.cpp
#include <iostream>
using namespace std;
// 翻译类
class Translater {
public:
Translater(const char * s) : middle(s){}
void operator()(const char *who,const char *what) {
cout << who << " " << middle << " " << what << endl;
}
private:
string middle;
};
int main(int argc, char * argv[]) {
Translater chinese("说");
Translater english("said");
chinese("张三", "你好"); // 需要重载 () 运算符
english("lisa", "bye");
return 0;
}
编译和运行结果如下
weimz@mzstudio:~$ g++ -o op_call op_call.cpp
weimz@mzstudio:~$ ./op_call
张三 说 你好
lisa said bye