c++ - operator() 的典型用途是什么

标签 c++ operator-overloading

<分区>

Possible Duplicate:
How can overloading operator “function call” in C++ be useful?

我经常看到括号运算符 operator() 在类或结构上被重载。我自己从来没有遇到过这样的需求,想知道这个运算符的典型用途/需求是什么?

例如,重载 operator== 被接受为返回 true 或 false,基于与提供的参数的某种相等性。这具有特定的可接受和预期的行为。

最佳答案

它被大量用于 STL 的散列、集合和算法组件,以构建称为“仿函数”的东西。例如:

using stl::map ;

map<string, string> myMap ;

但是如果您查看 map 的规范,它还包含一个默认为 less 的“比较”条目。 Compare 是您希望 map 在比较两个键时使用的“仿函数”。它看起来像这样:

template<class Key>
class less<Key> {
public:
  boolean operator()(const Key& a, const Key& b) { return a < b ;}
} ;

所以你拥有的是:

 map<string, string, less<string> > myMap ;

每当你在 map 中放置一些东西或试图在 map 中找到一些东西时,它都会使用 less::operator() 来进行比较。

您可以使用它来实现其他效果,例如在使用“排序”时,您可以使用不同的仿函数进行排序以按相反的顺序生成项目。

关于c++ - operator() 的典型用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6049242/

相关文章:

C++ Templates : Are template ínstantiations inlined? 性能上有缺点吗?

C++ Qt 从 QNetworkRequest 获取 HTTP header

kotlin - Kotlin 协程中的 "+"?

c++ - 重载运算符 >>()

f# - 可区分联合的运算符重载

c++ - 混合 Objective C ,(*.m , *.mm & .c/.cpp ) 文件

c++ - pyarrow 表到 PyObject* 通过 pybind11

c++ - 从另一个类的构造函数将数组传递给类函数

c++ - 使用 unique_ptr 数据成员重载用户定义类型的 operator=

c++ - C++中两个/两个以上对象的重载加法赋值运算符?