小编EDT*_*rdy的帖子

我是否经常使用std :: move()?

我终于感觉到我了解现代C ++中的移动语义,并且它在编写代码的方式上发生了巨大的变化。现在,我正在开发一个使用依赖注入的应用程序,并结合了我对移动语义学的新发现,但是最终我使用了std::move()太多,以至于我担心自己使用不正确。

以前,如果要在对象中注入需要复制的依赖项,则可以这样编写我的构造函数:

class NeedsCopyOfFoo
{
public:
  NeedsCopyOfFoo(const Foo& foo)
    : m_myFoo{foo} {}
private:
  Foo m_myFoo;
};
Run Code Online (Sandbox Code Playgroud)

现在,我的课程如下所示:

class NeedsCopyOfFoo
{
public:
  NeedsCopyOfFoo(Foo foo)
    : m_myFoo{std::move(foo)} {}
private:
  Foo m_myFoo;
};
Run Code Online (Sandbox Code Playgroud)

我的设计中有一些类需要多达三到四个类类型的依赖关系,而最终我将它们全部移走了。显然,如果构造函数的调用者无法使用右值调用构造函数,但是在构造NeedsCopyOfFoo对象之后也将不使用依赖项,那么我也需要在此使用std::move()它,以避免完全不必要的复制。

这是Modern C ++应该看起来的样子吗?鲍勃叔叔是否提到“ std::move()经常使用” 的代码味道?我是否反应过度,因为我还不习惯这种新风格?

c++ move move-semantics c++17

2
推荐指数
1
解决办法
211
查看次数

标签 统计

c++ ×1

c++17 ×1

move ×1

move-semantics ×1