我只是read有人用构造函数和 operator()
predicate 调用类:
// Example
class Foo {
public:
Foo(Bar);
bool operator()(Baz);
private:
Bar bar;
};
但是,我以前从未听说过在这种情况下使用过谓词 这个词。我会称这样的东西为仿函数。对我来说,谓词 应该是形式逻辑领域的东西。
这引发了以下问题:
- 这是
Foo
之类的常用词吗? - 这两个术语是否可以互换使用,或者它们的意思略有不同?
- 或者
- 返回类型(
bool
与其他类型)有关系吗? operator()
是const
怎么样?
- 返回类型(
最佳答案
Functor 是一个术语,指的是在表达式(具有零个或多个参数)中支持运算符 ()
的实体,即在语法上表现为函数的东西。 Functor 不一定是某个重载了operator()
的类的对象。普通的函数名也是仿函数。虽然在某些情况下,您可以看到术语“仿函数”在更狭义和排他的意义上使用:只是类对象,而不是普通函数。
谓词 是一种特定类型 的仿函数:计算结果为 bool 值的仿函数。它不一定是 bool
类型的值,而是具有“ bool ”语义的任何类型的值。不过,该类型应该可以隐式转换为 bool
。
关于c++ - 谓词和仿函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805677/