此示例中的圆括号"()" -重载是什么意思

What does the round brackets"()"-overloading mean in this example

本文关键字:重载 是什么 意思 圆括号      更新时间:2023-10-16

我是C++的新手。我学习了一个简单的例子(参见下面的代码)。我无法理解超载"()"的目的是什么。std::thread my_thread(my_func);中是否使用了"重载()"?

感谢您的关注。

struct func
{
 int& i;
 func(int& i_) : i(i_) {}
 **void operator() ()** // the question point
 {
 for (unsigned j=0 ; j<1000000 ; ++j)
 {
   do_something(i);           
 }
}
};
void oops()
{
 int some_local_state=0;
 func my_func(some_local_state);
 std::thread my_thread(my_func);
 my_thread.detach();          
 } 

使用func my_func(some_local_state);,您现在可以像这样呼叫my_func();
是一个函数(而不是类似my_func.dosomething();的函数),并且
中的循环将执行操作员功能。

std::thread就是这样使用它的(不管出于什么原因,创作者只是喜欢它)
因此,如果没有operator(),您的对象对std::thread 就没有意义