2012-11-13 2 views
4

const 언급하는 C#에서 readonly의 C++에 해당하는 많은 질문이 있습니다. 그러나 지금까지 나는 내가 알 수있는 한, 실제로 여기에있는 세부 사항을 실제로 언급했거나 심지어 딱히 언급하지 않았다.C#에서 readonly C++ (미묘한 차이점 const)

판독기 필드는 ctor (spec) 내에서 (심지어 여러 번) 설정할 수 있습니다. 이렇게하면 최종적으로 값을 결정하기 전에 다양한 작업을 수행 할 수 있습니다. 반면에 C++의 Const는 ctor가 실행되기 전에 최종 값이 필요하다는 점에서 (C++과 C# 둘 다에서) 미묘하게 다르게 작동합니다.

C++에서 readonly의 동작을 여전히 유지할 수있는 방법이 있습니까?

+0

대부분이 제안합니다 const –

답변

3

아니요.

당신이 할 수있는 일은 필드를 보호하는 것입니다. 필드를 보호하려면 적어도 외부에서 getter를 통해 액세스해야하며, 필드 자체를 호출 할 수있는 세터를 만들 수 있습니다.

그렇지 않으면 const이 최선의 방법입니다.

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 

다른 대안은 한 번만 설정을 허용하는 사용자 정의 구조를 사용하는 것입니다, 그러나 이것은이다 잔인 함 (어쨌든 컴파일 타임에이를 강제 할 수는 없을 것입니다).

+0

고맙습니다. (나는 C++ const로 C# const를 망쳤다 고 생각한다.) – mafu