60 / 45 / 12
Регистрация: 07.10.2011
Сообщений: 139
|
|||||||||||
1 | |||||||||||
const_cast что это?12.07.2012, 21:44. Просмотров 6862. Ответов 9
Метки нет Все метки)
(
Здравствуйте! В общем, наткнулся на такую программу:
Очевидно, что все изюминка в 8 строчке... Так что делает const_cast?
0
|
|
12.07.2012, 21:44 | |
mc68hc908 - это что это, это с чем это ?? Не могу понять, что это за реализация ORM и как это работает |
|
бжни
2469 / 1679 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
12.07.2012, 21:51 | 2 |
http://codepad.org/tiOYR1o1
мне так больше нравится это снятие константности, невалидное в данном случае
2
|
197 / 197 / 78
Регистрация: 10.07.2012
Сообщений: 405
|
||||||
12.07.2012, 21:52 | 3 | |||||
похоже что тут дело в оптимизациях компилятора
вот такая модификация уже приведёт к ожидаемым значениям:
0
|
![]() 1661 / 1033 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
12.07.2012, 21:54 | 4 |
const_cast снимает константность при преобразовании типа. Поскольку переменная a была изначально константной, её адрес имел тип const int *. Благодаря const_cast с типа адреса была снята константность и его стало возможно поместить в переменную b, которая указывает на неконстантное целое число. Так что в 9 строчке изменяется значение переменной a. То, что на экран выводится её предыдущее значение - результат некорректной работы оптимизатора, который ошибочно предположил, что объявленная как const переменная a изменяться не будет и подставил инициализационное значение. Если добавить к объявлению переменной a ещё и ключевое слово volatile, то такие оптимизации для этой переменной будут отключены и на экран выведутся две четвёрки.
4
|
бжни
2469 / 1679 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
12.07.2012, 21:56 | 5 |
а так да
изза оптимизации компилятор считает, что константа не меняется но не тут то было Добавлено через 1 минуту здесь нет некорректной работы после того, как программист снял константность с константы и начал в нее писать имеем undefined behavior
1
|
60 / 45 / 12
Регистрация: 07.10.2011
Сообщений: 139
|
|
12.07.2012, 21:57 [ТС] | 6 |
0
|
![]() ![]() |
|
12.07.2012, 21:59 | 7 |
Для полноты картины: http://alenacpp.blogspot.com/2005/08/c.html
1
|
Нуб со стажем
36 / 34 / 10
Регистрация: 19.02.2012
Сообщений: 118
|
|
12.07.2012, 21:59 | 8 |
1
|
бжни
2469 / 1679 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
12.07.2012, 22:13 | 10 | |||||
нет
чтобы работать с неконстантами в константном контексте я встречал использование такого в основном при неудачном унаследованном интерфейсе
0
|
12.07.2012, 22:13 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Зачем файлы .h называть .hpp? Это новый стандарт? Что это дает? Что это может быть? или как это называется? Меня взломали! При загрузке компа появляется это, не знаете что это и как исправить Можно ли утверждать, что в визуальном программировании: формы - это классы, а виджеты - это объекты? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |