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());才会去执行吗?有点迷糊,求解答,谢谢各位大佬。
#笔试题目#
全部评论
你传入的是一个函数对象,也是一个可执行对象,在线程里完成调用,看一下thread的源码的你应该就清楚了。
点赞 回复 分享
发布于 2019-07-28 11:24

相关推荐

野猪不是猪🐗:这种直接口头上答应,骗面试,面完了直接拉黑,相当于给自己攒面经了(
点赞 评论 收藏
分享
什么时候才能有offer啊_:十年前我还在刺激战场研究跳伞的底层原理呢
投递牛客等公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务