나는 생성자와 다른 init
기능을 가진 클래스가있는 라이브러리를 사용하고 있습니다. init
이후지금부터 _const 변수를 만들 수 있습니까?
MyClass a;
a.init();
이 (나는 const MyClass a
을 쓸 수 없습니다) CONST 인스턴스를 생성에서 저를 방지 const
되지 않습니다 : 때마다 나는 예를 들어, 호출 할 필요가 새로운 인스턴스를 만든다. init을 호출 한 다음 "here on out"에서 선언합니다 (범위의 나머지 부분을 추측합니다). 내 변수는 const
입니까?
이 작동하지만, 원래의 변수를 접촉 여부에 의존 :
MyClass dont_touch;
dont_touch.init();
const MyClass & a = dont_touch;
대답은 '아니오'입니다. 너처럼 나도 그랬 으면 좋겠다. – Mehrdad
'init' 호출에'const_cast'를 사용하여 빠르고 더러운 작업을 수행 할 수도 있습니다. 즉,'const' 객체를 선언하고'init' 호출을 위해 객체 주위에'const_cast'를 선언하십시오. 그러나'const_cast'는 일반적으로 나쁜 습관으로 여겨지고 있습니다. 나는 [templated solution] (http://stackoverflow.com/a/23400028/3100771)이 슈퍼 매끄럽다고 생각합니다. – Apriori
@Apriori 확실히 정의되지 않은 동작. const_cast를 정의 된 const 객체에서 const_cast 없애고 const가 아닌 내용을 처리 할 수 없습니다. –