가 일정한 기능 someFunc()
에서 다음과 같은 상황을모범 사례는
class A
{
public:
void someFunc() const
{
b->nonConstFunction(); //this is a non const function in the class B
}
private:
B* b;
};
를 생각 해보자 const를-방법에서 구성원 포인터의 const가 아닌 방법을 액세스 할 때 나는 b
의 상수가 메소드를 호출 할 수 있으며 컴파일합니다. 그래서 함수 someFunc()
은 어떻게 든 진정한 const 함수가 아닙니다. 하지만 모범 사례에 따르면 const
은 어디에서나 할 수 있습니다. 이 조언을 여기서도 적용해야합니까? 함수를 선언 할 수 있습니다 void someFunc()
nonconstant 더 정직한 다음 void someFunc() const
입니다. 또는 이런 종류의 것들을 다루기위한보다 일반적인 조언이있을 수 있습니까?
정말 '클래스 A'가 무엇을 나타내는가에 따라 달라집니다. 여기에 맞는 크기는 없습니다. – juanchopanza
['mutable'] (http://en.cppreference.com/w/cpp/language/cv) => 다음과 같은 경우는 완벽합니다 : const 환경에서 수정할 수있는 변수를 정의하십시오 클래스 인스턴스에 관계없이 상관하지 않기 때문에 (IMHO, mutex => mutex는 const env에서 수정해야 함) – Garf365
사본에 대한 액세스 권한이 있으면 Effective C++의 항목을 읽는 것이 좋습니다. 논리 대 bitwise constness; 그것은 당신이 지금 당장 가지고있는 혼란입니다. [이 질문] (http://stackoverflow.com/questions/3830367/difference-between-logical-and-physical-const-ness#3830484) 그것에 약간의 토론이 있습니다. – TartanLlama