根据 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;
}