代码之家  ›  专栏  ›  技术社区  ›  a06e

常量数据成员阻止自动生成复制和移动因子?

  •  1
  • a06e  · 技术社区  · 9 年前

    考虑以下类别:

    struct A 
    { 
        int const x;
        A(int x) : x(x) { }  
    }
    

    这个类会自动生成移动和复制对象吗?或者这是由于 const 现场成员 x ?

    根据我的经验,答案是不会生成移动和复制因子,但我没有在标准中明确提到这一点。标准中是否有任何内容暗示在这种情况下不会生成移动和复制因子?

    当然,同样的问题也适用于移动/复制作业。

    1 回复  |  直到 9 年前
        1
  •  4
  •   Community CDub    4 年前

    复制和移动构造函数将被声明为默认值,而不会被定义为已删除(即,将生成它们)。它们将具有预期的行为(请记住,非类类型的“移动构造函数”对源对象没有影响)。

    复制和移动分配运算符将被声明为默认值,但将根据 [类别副本] /23:

    类的默认复制/移动赋值运算符 X 如果 十、 具有[…]

    • 的非静态数据成员 const 非类类型(或其数组)[…]