CXX看多线程的时候遇到了一个重载的问题,不太明白,求解惑
下面是代码
#include <iostream>
#include <thread>
using namespace std;
struct func
{
int& i;
func(int& i_) : i(i_) {}
void operator() ()
{
for (unsigned j = 0; j < 10; ++j)
{
cout << i << endl; // 1. 潜在访问隐患:悬空引用
}
}
};
int main ()
{
int some_local_state = 0;
func my_func(some_local_state);
std::thread my_thread(my_func);//①
my_thread.detach(); // 2. 不等待线程结束
system("pause");
return 0;
} 问题描述: 为什么①这个地方会去执行被重载的那个方法, 不应该是这样std::thread my_thread(my_func());才会去执行吗?有点迷糊,求解答,谢谢各位大佬。
#笔试题目#
360集团公司氛围 352人发布