readonly
关于在 C# 中提到的 C++ 等价物有很多问题const
。但是,到目前为止,据我所知,我没有发现实际上是正确的,甚至没有提到我在这里所追求的细节。
可以在 ctor ( spec )中设置(甚至多次)只读字段。这允许在最终决定值之前执行各种操作。另一方面,C++ 中的 const 行为略有不同(在 C++ 和 C# 中),因为它需要在 ctor 运行之前提供最终值。
有没有办法仍然实现readonly
C++ 中的行为?
readonly
关于在 C# 中提到的 C++ 等价物有很多问题const
。但是,到目前为止,据我所知,我没有发现实际上是正确的,甚至没有提到我在这里所追求的细节。
可以在 ctor ( spec )中设置(甚至多次)只读字段。这允许在最终决定值之前执行各种操作。另一方面,C++ 中的 const 行为略有不同(在 C++ 和 C# 中),因为它需要在 ctor 运行之前提供最终值。
有没有办法仍然实现readonly
C++ 中的行为?
是的,使用const
- 在编译时不必知道该值:
struct X
{
const int a;
X(int y) : a(y) {}
};
//...
int z;
cin >> z;
X x(z); //z not known at compile time
//x.a is z
另一种选择是使用用户定义的结构,它只允许设置一次,但这太过分了(而且你可能无法在编译时强制执行)。
并不真地。
您可以做的是保护一个字段,以便它必须由 getter 访问(至少从外部),并且您可以为它创建一个只允许调用一次的 setter。
否则,const
是你最好的选择。