gpt4 book ai didi

c++ - mycomparison 是对象、函数还是函数指针?

转载 作者:太空狗 更新时间:2023-10-29 23:52:21 24 4
gpt4 key购买 nike

我正在经历以下代码:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com