关于C#提及readonly
中const
的C ++等价物有很多问题。然而,到目前为止,我发现没有,据我所知,实际上是正确的,甚至没有提到我在此之后的细节。
可以在ctor(spec)内设置只读字段(甚至多次)。这允许在最终确定值之前执行各种操作。另一方面,C ++中的Const的行为略有不同(在C ++和C#中),因为它需要在ctor运行之前提供最终值。
有没有办法在C ++中实现readonly
的行为?
答案 0 :(得分: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
另一种方法是使用一个只允许设置一次的用户定义结构,但这样做太过分了(无论如何你可能无法在编译时强制执行此操作)。
答案 1 :(得分:3)
不是。
你可以做的是保护一个字段,以便它必须被一个getter访问(至少从外部),你可以为它创建一个只允许自己被调用一次的setter。
否则,const
是您最好的选择。