c++ thread 传值

新手上路,请多包涵
class thread_test{
public:
    void A(const int &a){
    }
};
int thread_int_1 = 2;`
std::thread NEW_THREAD(&thread_test::A,&_thread_test,thread_int_1);

为什么这里传入thread_int_1 如果A的参数为const &就不会报错 如果把const去掉就只能用std::ref来传递 const&与&传递的时候差别不是就在A中不能修改吗

阅读 1.3k
1 个回答

thread_int_1 并不是直接传递给 A ,而是要传递给 thread 的构造。这里会发生一次拷贝。于是如果不用 std::ref 包装一层,不能实现对 thread_int_1 的修改。

const int & 的时候这无所谓,因为不会修改。但是,int & 的时候就不成了,所以必须用 std::ref

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题