| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Поля класса в Turbo Delphi |
| Автор: Felan 21.5.2008, 09:18 | ||
Есть класс:
Как и где правильно инициализировать поле fCV? Как сделать его константой? Че-то я не нашел в справке ничего похожего на class const? Есть ли какие либо аналоги статических конструкторов или инициализаторов? |
| Автор: Felan 21.5.2008, 11:47 | ||
Точно, че-то меня переклинило на class const.... То что надо. Далее чисто флейм
Ну во-первых это не статические поля, а поля класса. Точно разницу не помню, но это разные вещи. Во-вторых, причем здесь вызывается он автоматом или нет? Ну даже если и не вызывается, его все равно надо будет вызвать в каком-либо месте. И тогда будет произведена повторная инициализация. |
| Автор: Alexeis 21.5.2008, 12:07 |
Статические не в смысле static, а в смысле что создаются одновременно с объектом. В Delphi такого нет. К тому что в Delphi нет необходимости во всяких статических конструкторах и инициализаторах, а в С++ для того чтобы проинициализировать переменную-поле до вызова конструктора предка приходиться пользоваться статическим конструктором. |
| Автор: Felan 21.5.2008, 13:06 | ||
Это поля объекта. А я говорю о полях класса. Тпа Class var Class procedure Разве они создаются с КЛАССОМ. А следовательно, возможно их надо будет инициализировать, и использовать до того, как будет создан хотя бы один объект. |
| Автор: Alexeis 21.5.2008, 14:06 | ||
Ааа эти, они инициализируются точно также как и в C++ в любом месте где это допустимо. <имя класса>.<имя переменной класса> := Some_value; |
| Автор: Felan 21.5.2008, 14:45 |
| Так вот в том и вопрос, где их лучше, или положено, инициализировать. Если в конструкторе, то при каждом создании они будут переинициализироваться... так-то в принципе, не жалко... но вот для многопоточных приложений надо будет синхронизацию городить... В секции initialization - нарушается инкапсюляция... Перефразирую вопрос, есть ли специальные "секции"/места/методы для инициализации таких полей? |
| Автор: Alexeis 21.5.2008, 15:22 | ||||
Сам себе и отвечаешь
Разумеется логичным будет инициализировать их вне класса, в объекте, который будет их инстанцировать. |