Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

const в переменных


Gu ©   (2011-12-03 16:34:00) 

объясните, зачем в некоторых функциях и процедурах перед переменными добавляют const?
например
function IsAccel ( Key: Word; const S: string ): Boolean;

ведь S тут не var и изменятся и так не может.


RWolf   (2011-12-04 15:48:00) [1]


> объясните, зачем в некоторых функциях и процедурах перед
> переменными добавляют const?

попробуй то и другое и посмотри, какой код сгенерируется.
вкратце: с const оптимальнее.


Юрий_   (2011-12-03 17:26:00) [2]


> реф на строку в случае const просто не будет добавляться.


Такая же фигня происходит и с интерфейсами. В результате можно поиметь мемлик - если в качестве интерфейсного параметра подставить непосредственно  вызов конструктора объекта, который его реализует, и который должен бы был сам разрушиться, исходя из своей реализации.
Следует быть внимательным.


Rouse_   (2011-12-03 17:20:00) [3]


> ведь S тут не var и изменятся и так не может.

реф на строку в случае const просто не будет добавляться.


Anatoly Podgoretsky   (2011-12-03 17:10:00) [4]

> Gu  (03.12.2011 16:34:00)  [0]

Ошибаешься, легко изменяется.


sniknik   (2011-12-03 16:48:00) [5]

кстати для строк, вроде оптимизатор сам добавит, если изменений в теле нет... но в общем, лучше писать правильно, а не на оптимизатор надеяться.


sniknik   (2011-12-03 16:46:00) [6]

передача по ссылке, как и var, но с контролем (самоконтролем), чтобы не менялось.
быстрее ссылку передать, чем копию, строки например (ну вот к примеру она гигобайтная...)


Наверх

Титульная страница Поиск, карта сайта Написать письмо