作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在经历以下代码:
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
对象、函数还是函数指针?
最佳答案
SensibleLessThan<String>
是一种类型。 mycomparison
是该类型的对象。现在看来类型重载了 operator()
,这使得它可以像函数一样被调用。这种类型的对象通常称为函数对象 或仿函数。此类对象与函数一样,被认为是可调用。
举个简单的例子,这里有一个 adder
重载 operator()
的结构.我们可以创建 adder
的对象类型,然后像使用函数一样使用该对象。
#include <iostream>
struct adder
{
int operator()(int a, int b) { return a + b; }
};
int main()
{
adder my_adder;
std::cout << my_adder(5, 6) << std::endl;
}
Here it is in action .事实上,C++ 标准库中已经存在类似的类型: std::plus
.
关于c++ - mycomparison 是对象、函数还是函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16224189/
我正在经历以下代码: template void test_decimals() { SensibleLessThan mycomparison; String lhs = "1.212";
我是一名优秀的程序员,十分优秀!