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中不能修改吗
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中不能修改吗
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
thread_int_1
并不是直接传递给A
,而是要传递给thread
的构造。这里会发生一次拷贝。于是如果不用std::ref
包装一层,不能实现对thread_int_1
的修改。const int &
的时候这无所谓,因为不会修改。但是,int &
的时候就不成了,所以必须用std::ref
。