可以分配或复制具有 const 成员的类

问题描述 投票:0回答:0

根据 abseil.io/tips/177,它说

具体来说,如果你的类有 const 成员,则不能将其分配给(无论是通过复制分配还是移动分配)。语言理解这一点:如果你的类型有一个 const 成员,复制赋值和移动赋值运算符将不会被合成。

我创建了一个简短的片段,我看到对象可以被复制/移动。我怎么能理解来自 abseil.io/tips/177 的声明?

#include <iostream>
class Stitch {
 public:
  Stitch(int in):num(in) { std::cout << "c'tor, address:" << this << std::endl; }
  ~Stitch() { std::cout << "d'tor, address:" << this << std::endl; }
  const int num;
  const std::size_t kAddr = (int)(this);
};
int main() {
  Stitch s1(1);
  std::cout << "s1 address: " << &s1 << " " << s1.num << std::endl;
  Stitch s2 = s1;
  std::cout << "s2 address: " << &s2 << " " << s2.num <<  std::endl;
  Stitch s3 = std::move(s1);
  std::cout << "s3 address: " << &s3 << " " << s3.num <<  std::endl;
  Stitch s4 = Stitch(4);
  std::cout << "s4 address: " << &s4 << " " << s4.num <<  std::endl;
}

c++ constants copy-constructor member move-constructor
© www.soinside.com 2019 - 2024. All rights reserved.