這裏是類似於代理呼叫功能的源代碼,我在帖子「C++隱藏功能」中閱讀代理呼叫功能如何工作?
令我困惑的唯一部分是那些運算符重載函數。 他們是什麼樣的運營商? (他們當然似乎並不像普通的運算符()的,和爲什麼它返回一個函數指針,即使沒有指定返回類型?
謝謝!
template <typename Fcn1, typename Fcn2>
class Surrogate {
public:
Surrogate(Fcn1 *f1, Fcn2 *f2) : f1_(f1), f2_(f2) {}
// Overloaded operators.
// But what does this do? What kind of operators are they?
operator Fcn1*() { return f1_; }
operator Fcn2*() { return f2_; }
private:
Fcn1 *f1_;
Fcn2 *f2_;
};
void foo (int i)
{
std::cout << "foo: " << i << std::endl;
}
void bar (double i)
{
std::cout << "bar: " << i << std::endl;
}
int main()
{
Surrogate<void(int), void(double)> callable(foo, bar);
callable(10); // calls foo
callable(10.1); // calls bar
return 0;
}
基本上這個類的一個實例可以用作Fcn1 *或Fcn2 *而不需要鑄造 – cppguy 2012-07-06 01:39:47