Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Ну да. Я просто сказал о наиболее частом использовании. Если... [upd] 03.10.05 13:15 Число просмотров: 1960
Автор: amirul <Serge> Статус: The Elderman Отредактировано 03.10.05 13:17 Количество правок: 1
|
> Ну не всегда константный элемент объекта может > инициализироваться константой. Может это быть и переменная, > и системный параметр (текущее время, например), и что-то > считанное из файла.
Ну да. Я просто сказал о наиболее частом использовании. Если оптимизатор не сможет заменить все обращения к константе на ее значение (неизвестное на этапе компиляции), то он просто заведет переменную (вернее он ее заведет в любом случае, но линкер не сможет отрезать "неиспользуемый код"). В случае x86 платформ (что *nix, что винды) никакой readonly памяти не будет. Переменная просто попадет в секцию данных (это если статическая или глобальная) или там же где и все остальные (стек/куча/ручная выделялка), а все попытки обратиться к ней на изменение будут пресекаться на этапе компиляции.
> Мои архаичные копайлеры "mutable" не поймут, ничего, > смирюсь в ворнингами.
Это ж какой компайлер не понимает стандарта 98-го года? Семь лет прошло как никак - было время привести в соответсвтие так сказать (и это не export, который так до сих пор никем толком и не поддерживается, ибо не совсем понятно как сделать его реализацию)
-----------
Да, кстати, если компилятор таки не понимает стандарта 98-го года, то можно использовать const_cast (из того же стандарта, если он хотя бы частично реализован) ну или c-style cast (обычные скобки) для отрезания константности из типа. Некошерно, зато работать будет и компиляться без ворнингов.
|
|
|