具有std :: mo的构造函数,无需通过引用传递

问题描述

我有时会遇到以下类型的构造函数

struct A
{
    std::string a; 
    A( std::string a ) : a( std::move(a) ){ }  \\ a is not passed by reference
};

令我困惑的是,似乎a没有被引用传递,因此制作了a的副本。如果是这样,这样做std::move毫无意义。但是,许多专家似乎都这样做,因此背后必须有原因。你能解释为什么吗?

解决方法

它避免了第二次复制。否则,从传递给函数的use tokio; // 0.2.23 #[tokio::main] async fn main() { let (_,_) = tokio::join!(start_server_listener(),start_job_processor()); } 构造本地std::string将是第二个副本。