Вам разрешается отбрасывать постоянную цель объекта, который известен не, являющийся const
. Например, интерфейс может передавать объекты с помощью указателя const
или ссылки const
, но вы передали объект, который не является const
, и хотите/должны его изменить. В этом случае может быть правильным отбросить созвездие.
С другой стороны, отбрасывая постоянство объекта, который был const
, вы можете столкнуться с серьезными проблемами: при доступе к этому объекту, в частности при записи на него, система может вызывать всевозможные странные вещи: поведение не определено (по стандарту C++) и на конкретной системе, это может вызвать, например, нарушение доступа (поскольку адрес объекта устроен так, чтобы он находился в области только для чтения).
Обратите внимание, что, несмотря на другой ответ, я увидел const
объекты должны получить адрес, назначенный, если адрес когда-либо был использован и каким-то образом использован. В вашем коде выражение const_cast<int&>(maxint)
по существу получает адрес вашей константы int, который, по-видимому, хранится в области памяти, которая помечена как доступная только для чтения. Интересным аспектом вашего фрагмента кода является то, что он похож на , видимо, работает, особенно при включении оптимизации: код достаточно прост, что компилятор может сказать, что измененное местоположение на самом деле не используется и на самом деле не пытается измените местоположение памяти! В этом случае не сообщается о нарушении доступа.Это то, что, по-видимому, имеет место, когда константа объявляется внутри функции (хотя константа также может быть помещена в стек, который обычно не может быть помечен как только для чтения). Другим потенциальным результатом вашего кода является (независимо от того, объявлена ли константа внутри функции или нет), которая фактически изменяется и иногда считывается как 100 и в других контекстах (которые так или иначе связаны с адресом) как 200.
Ваши пугающие цитаты вокруг «неопределенного поведения» подразумевают, что вы не знаете, что это значит - [время для чтения] (http://en.wikipedia.org/wiki/Undefined_behavior). – ildjarn