C#在C+中为只读+;(与常量的细微差异) 代码< >代码> const ,关于C++等价于只读< /代码>的问题很多。然而,到目前为止,我发现,据我所知,没有一个是真正正确的,甚至没有提到我在这里要了解的细节
可以在ctor()中设置只读字段(甚至多次)。这允许在最终确定值之前执行各种操作。另一方面,C++中的Const在C++和C语言中的行为有细微差别,因为它要求在Ctoter运行之前可以获得最终值。C#在C+中为只读+;(与常量的细微差异) 代码< >代码> const ,关于C++等价于只读< /代码>的问题很多。然而,到目前为止,我发现,据我所知,没有一个是真正正确的,甚至没有提到我在这里要了解的细节,c#,c++,constructor,constants,readonly,C#,C++,Constructor,Constants,Readonly,可以在ctor()中设置只读字段(甚至多次)。这允许在最终确定值之前执行各种操作。另一方面,C++中的Const在C++和C语言中的行为有细微差别,因为它要求在Ctoter运行之前可以获得最终值。 是否有一种方法仍然能实现C++中的代码> >只读< /代码>?< P> >是的,使用 const > -在编译时不必知道值: struct X { const int a; X(int y) : a(y) {} }; //... int z; cin >> z; X x
是否有一种方法仍然能实现C++中的代码> >只读< /代码>?< P> >是的,使用<代码> 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
是您最好的选择。谢谢您,我可以更正。(我想我用C++ const搞乱了C语言。)