C#readonly in C++(与const的细微差别)

maf*_*afu 4 c# c++ constructor const readonly

关于readonlyC#提及的C++等价物有很多问题const.然而,到目前为止,我发现没有,据我所知,实际上是正确的,甚至没有提到我在此之后的细节.

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

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

Luc*_*ore 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
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用一个允许只设置一次的用户定义结构,但这是过度的(你可能无论如何也无法在编译时强制执行此操作).