您不能将对象移动到另一个对象的原因是什么std::thread
?在某些情况下它可能有用。例如:
您创建一个接受传入套接字连接的循环。将传入连接移动到将处理连接的另一个线程会很好。在接受循环中不再需要连接。那么为什么要创建一个指针呢?
一个小测试用例:
#include <iostream>
#include <thread>
using namespace std;
class Pointertest
{
public:
Pointertest() {cout << "Constructor";}
Pointertest(Pointertest &pointertest) {cout << "Copy";}
Pointertest(Pointertest &&pointertest) {cout << "Move";}
~Pointertest() {cout << "Destruct";}
};
void foo(Pointertest &&pointertest)
{
}
int main()
{
Pointertest pointertest;
foo(std::move(pointertest)); //Works
thread test(foo,std::move(pointertest)); //**cannot convert parameter 1 from 'Pointertest' to 'Pointertest &&'**
}