我正在通过以下代码:
template <typename String>
void test_decimals()
{
SensibleLessThan<String> mycomparison;
String lhs = "1.212";
String rhs = "1.234";
CHECK_EQUAL(mycomparison(lhs, rhs), true); // CHECK EQUAL is macro
}
我不明白以下结构的含义:
SensibleLessThan<String> mycomparison;
mycomparison(lhs, rhs)
mycomparison
是对象,函数还是函数指针?
答案 0 :(得分:8)
SensibleLessThan<String>
是一种类型。 mycomparison
是该类型的对象。现在看来类型重载operator()
,它允许它被调用,好像它是一个函数。此类对象通常称为函数对象或仿函数。这些对象与函数一样,被视为 callable 。
举一个简单的例子,这是一个重载adder
的{{1}}结构。我们可以创建operator()
类型的对象,然后使用该对象,就像它是一个函数一样。
adder
Here it is in action。事实上,C ++标准库中已存在类似的类型:std::plus
。