这显然是一个优势,只要参数类型对移动构造便宜(这是 std::string 的情况)。 但是有一个缺点需要考虑:推理不适用于将函数参数分配给另一个变量(而不是初始化它)的函数: void setName(std::string name) { m_name = std::move(name); } 将导致 m_name 在重新分配之前引用的资源重新分配。我建议阅读 ...