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());才会去执行吗?有点迷糊,求解答,谢谢各位大佬。
#笔试题目#