C++ 这一段关于函数对象的内容是什么
我在一本书中看到了这句话,我不明白。这句话是:“C++ 这一段关于函数对象的内容是什么,c++,stl,C++,Stl,我在一本书中看到了这句话,我不明白。这句话是:“中的模板帮助您构造定义运算符()的对象。这些对象称为函数对象,可以在许多地方代替函数指针。” 请告诉我什么是operator(),我也想得到一些帮助来理解“函数对象”在本文中的含义。函数对象(通常称为函子)只是一个可以像函数一样运行的对象。例如,如果您想要一个函数在调用之间跟踪某些内容,那么这非常有用 要像函数一样使用对象,您需要能够调用它,如下所示: reallyAnObject(some, args); 通过为类重载operator()可以实
中的模板帮助您构造定义运算符()的对象。这些对象称为函数对象,可以在许多地方代替函数指针。”
请告诉我什么是operator()
,我也想得到一些帮助来理解“函数对象”在本文中的含义。函数对象(通常称为函子)只是一个可以像函数一样运行的对象。例如,如果您想要一个函数在调用之间跟踪某些内容,那么这非常有用
要像函数一样使用对象,您需要能够调用它,如下所示:
reallyAnObject(some, args);
通过为类重载operator()
可以实现这一点
标题提供了各种有用的工具来帮助您创建函数对象
下面是一个非常简单的示例:
struct Functor {
void operator() (int i)
{
std::cout << "Really an object. Called with " << i << '\n';
}
};
int main() {
Functor f;
// prints "Really an object. Called with 1"
f(1);
}
结构函子{
void运算符()(int i)
{
std::你能给我一个例子来进一步解释它吗。@codingisfun已经在编写它了!我认为上面代码的输出将是一个真正的对象。用1调用是吗?@codingisfun正确。谢谢你终于得到了它。它对函数对象和各种标准函子有深入的解释。我发现它是一个有用的请注意,该文档中针对编程问题提出的许多解决方案在C++11中被弃用,但它仍然回答了您的问题。相关(如果不是重复的话):
struct Printer {
std::ostream& os_;
Printer (std::ostream& os) : os_(os) {}
void operator() (int i)
{
os << i;
}
};
int main() {
// prints "12" to stdout
Printer p {std::cout};
p(1);
p(2);
// prints "34" to stderr
Printer p2 {std::cerr};
p2(3);
p2(4);
}