所以我有一些非常广泛的功能代码,其中主要数据类型是不可变的结构/类。通过将成员变量和任何方法设为 const,我一直在声明不可变性的方式是“实际上是不可变的”。
struct RockSolid {
const float x;
const float y;
float MakeHarderConcrete() const { return x + y; }
}
这实际上是 C++ 中“我们应该这样做”的方式吗?或者,还有更好的方法?
原文由 BlamKiwi 发布,翻译遵循 CC BY-SA 4.0 许可协议
您提出的方式非常好,除非在您的代码中您需要分配 RockSolid 变量,如下所示:
这不起作用,因为复制赋值运算符将被编译器删除。
因此,另一种方法是将您的结构重写为具有私有数据成员的类,并且只有公共 const 函数。
这样,您的 RockSolid 对象是(伪)不可变对象,但您仍然可以进行分配。