4

readonly关于在 C# 中提到的 C++ 等价物有很多问题const。但是,到目前为止,据我所知,我没有发现实际上是正确的,甚至没有提到我在这里所追求的细节。

可以在 ctor ( spec )中设置(甚至多次)只读字段。这允许在最终决定值之前执行各种操作。另一方面,C++ 中的 const 行为略有不同(在 C++ 和 C# 中),因为它需要在 ctor 运行之前提供最终值。

有没有办法仍然实现readonlyC++ 中的行为?

4

2 回答 2

6

是的,使用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

另一种选择是使用用户定义的结构,它只允许设置一次,但这太过分了(而且你可能无法在编译时强制执行)。

于 2012-11-13T14:14:51.927 回答
3

并不真地。

您可以做的是保护一个字段,以便它必须由 getter 访问(至少从外部),并且您可以为它创建一个只允许调用一次的 setter。

否则,const是你最好的选择。

于 2012-11-13T14:16:40.020 回答