2012-02-14 7 views
0

다음을 사용하여 상수를 변경할 수없는 이유를 설명해주십시오.변경 상수

const int i = 10; 
int * p = reinterpret_cast<int *>(&i); 
+1

constat is ... constant! 왜 그걸 바꿀거야? – DonCallisto

+0

나는 그것을 극복하는 방법을 알고 싶다.하지만 질문은 그것을하는 법이 아니었다. 나는 물었다. 왜 이런 식으로 갈 수는 없느냐. 대답은 Thx이다! –

답변

1

당신은 const와 멀리 캐스팅 const_cast를 사용해야 const_cast이 경우를 위해 특별히입니다.

+0

원래의 객체가 const로 선언 된 경우 const를 캐스팅하고 비 const 방식으로 결과를 사용하면 UB가 호출된다는 경고가 표시됩니다. – zinglon

0

const는 상수를 의미하며, 변경할 수 없습니다. int nonconst_i = const_cast<int>(i);을 수행 한 다음 nonconst_i를 사용할 수 있습니다.

+0

int nonconst_i = const_cast (i); 유효하지 않은 코드 =) –

+0

당신의 예제에서'int * p = const_cast (&i);'나는 믿습니다. – crush