2013-03-26 4 views
0

그래서 나는, 내가 내가이 작업을 수행해야한다는 말을 들었다 나는 종종 클래스 외부에서 호출 할 때이 변수가public const 변수 또는 get 함수를 사용하는 private이 바람직합니까?</p> <pre><code>class Foo{ public: //stuff Type getVariable(); private: Type Variable; //stuff } </code></pre> <p>그런데 왜 난 그냥 사용할 수 없습니다 :

class Foo{ 
    public: 
     //stuff 
    const Type variable 
    private: 
     //stuff 
} 
+0

멤버 함수에서 변수를 변경 하시겠습니까? 그렇다면 그것을 'const'로 만들지 마라. –

답변

5

당신이 할 수있는 , 그러나 동일한 결과를 기대하지 마십시오.

두 번째 경우에는 variable을 더 이상 수정할 수 없으며 기능 내부에서도 수정할 수 없습니다.

다른 것들입니다.

+0

그러나 "보안"측면에서 볼 때 동일한 문제가 발생합니까? 이것이이 두 가지를 구별하는 유일한면일까요? –

+0

@PatronBernard 아니요, ** 모든 ** 측면이 두 가지를 구별합니다. 그들은 완전히 무관합니다. –

+0

@PatronBernard, public 대 private은 단지 컴파일 타임 검사 일뿐입니다. 정말로 "보안"이 아닙니다. 충분한 동기 부여가 주어진다면 여전히 변수에 액세스하여 수정할 수 있습니다. 'const'는 컴파일러로 하여금 저장소를 읽기 전용 메모리 영역으로 옮길 수있게하고, 접근 시도를 변경하려고하면 컴파일러와 아키텍쳐에 따라 격렬하게 변합니다. –