我是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();
} 发布于 2015-06-21 16:38:29
使用您的func my_func(some_local_state);,您现在可以像这样调用my_func();
是一个函数(而不是像my_func.dosomething();这样的函数),并且
将执行运算符函数。
std::thread以这种方式使用它(不管出于什么原因,创建者只是喜欢它)。
因此,如果没有operator(),您的对象对std::thread就没有意义了。
https://stackoverflow.com/questions/30966801
复制相似问题