gpt4 book ai didi

c++ - void Classname::operator()(){ .... } 做什么?

转载 作者:太空狗 更新时间:2023-10-29 20:17:07 25 4
gpt4 key购买 nike

我正在研究一些 C++ 代码并遇到以下内容

void Classname::operator()()
{
//other code here
}

我认为这与重载构造函数有关,但有人可以详细说明一下吗?

最佳答案

operator() 是函数调用运算符。它允许您像函数一样使用类实例:

Classname instance;
instance(); //Will call the overload of operator() that takes no parameters.

这对仿函数和各种其他 C++ 技术很有用。您基本上可以传递一个“函数对象”。这只是一个具有 operator() 重载的对象。所以你将它传递给一个函数模板,然后它就像调用一个函数一样调用它。例如,如果定义了 Classname::operator()(int):

std::vector<int> someIntegers;
//Fill in list.
Classname instance;
std::for_each(someIntegers.begin(), someIntegers.end(), instance);

这将为列表中的每个整数调用instanceoperator()(int) 成员。您可以在 instance 对象中包含成员变量,以便 operator()(int) 可以执行您需要的任何处理。这比传递原始函数更灵活,因为这些成员变量是非全局数据。

关于c++ - void Classname::operator()(){ .... } 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7669949/

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