Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在C+中为只读+;(与常量的细微差异) 代码< >代码> const ,关于C++等价于只读< /代码>的问题很多。然而,到目前为止,我发现,据我所知,没有一个是真正正确的,甚至没有提到我在这里要了解的细节_C#_C++_Constructor_Constants_Readonly - Fatal编程技术网

C#在C+中为只读+;(与常量的细微差异) 代码< >代码> const ,关于C++等价于只读< /代码>的问题很多。然而,到目前为止,我发现,据我所知,没有一个是真正正确的,甚至没有提到我在这里要了解的细节

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

可以在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(z);   //z not known at compile time
          //x.a is z
另一种选择是使用用户定义的结构,该结构只允许设置一次,但这太过分了(而且您可能无法在编译时强制执行它)。

不太可能

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


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

谢谢您,我可以更正。(我想我用C++ const搞乱了C语言。)