编译器生成的移动成员在静态数据成员上运行

时间:2018-03-01 09:25:55

标签: c++ oop c++11

在Effective Modern C ++中,第17项(了解特殊成员函数 生成),Scott Meyers说生成的特殊移动成员函数(移动构造函数和移动赋值运算符)对类的非静态数据成员执行“成员移动”。

  

只有在需要时才会生成移动操作,如果生成它们,它们会对类的非静态数据成员执行“成员移动”。

我试图了解非静态条件,但我不能,任何人都可以向我解释为什么他们不能在静态数据成员上执行此操作?

2 个答案:

答案 0 :(得分:1)

我认为它只是引用静态成员,如下所示:

struct A{
   static int s; // static member, (not moved or copied when moving/copying an instance
   int w; // non-static member
};

答案 1 :(得分:1)

因为静态成员不是该类中创建的对象的一部分。虽然它们不需要移动(或在复制构造函数的情况下复制)。