相关疑难解决方法(0)

为什么我们复制然后移动?

我看到某个地方有人决定复制一个对象并随后将其移动到一个类的数据成员的代码.这使我感到困惑,因为我认为移动的重点是避免复制.这是一个例子:

struct S
{
    S(std::string str) : data(std::move(str))
    {}
};
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

  • 为什么我们不采用右值引用str
  • 副本不会很贵,特别是给出类似的东西std::string吗?
  • 作者决定复制然后移动的原因是什么?
  • 我应该什么时候自己做?

c++ move-semantics c++11

97
推荐指数
4
解决办法
7736
查看次数

转发C++ 0x中的所有构造函数

在C++ 0x中转发所有父构造函数的正确方法是什么?

我一直这样做:

class X: public Super {
    template<typename... Args>
        X(Args&&... args): Super(args...) {}
};
Run Code Online (Sandbox Code Playgroud)

c++ templates constructor c++11

17
推荐指数
2
解决办法
8133
查看次数

标签 统计

c++ ×2

c++11 ×2

constructor ×1

move-semantics ×1

templates ×1