Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

метод Create

261
14 июня 2006 года
ahilles
1.5K / / 03.11.2005
парни, правильно ли я начал класс?

TD3DModel = class (TObject)//акцент на то что класс исходит от самого начала
public
constructor Create(Param:integer);
end;

......

constructor TD3DModel.Create(Param: integer);
begin
.........
end;

компилируется нормально только правильно ли это?
14K
14 июня 2006 года
dsoft
36 / / 08.06.2006
Правильно, а какие проблемы? В таком классе все нужно делать самому и Destructor не забыть поставить.
286
15 июня 2006 года
misha_turist
572 / / 28.11.2005
Если ты под готовые компоненты пишеш, то:

Не совсем правильно, если я правильно помню, то метод Create ещё в TObject записан и вызываться при создании будет именно он. Ты всего то новый сонструктор добавил, вызвать который сможет только тобой написанный код.

Если тебе новый конструктор нужен, то пишы своё название к примеру MyCreate.
Если тебе тот заменить требуется, то надо так писать:
 
Код:
TD3DModel = class (TObject)
public
constructor Create(AOwner: TObject); overide;//праверь правильность написания overide
end;


У тебя правильно с точки зрения синтаксиса языка, но не правильно с точьки зрения конструкции VCL
14K
15 июня 2006 года
dsoft
36 / / 08.06.2006
to misha_turist
цитата
[COLOR="Red"]Не совсем правильно[/COLOR]

правильно, правильно.

цитата
[COLOR="red"]У тебя правильно с точки зрения синтаксиса языка, но не правильно с точьки зрения конструкции VCL[/COLOR]

С любой точки. В TObject Create всего лишь создает объект, а человеку требуется создать компонент. И запись:

TD3DModel = class (TObject)

равносильна

TD3DModel = class

и override здесь не требуется. Но если так сильно хочется, можно добавить inherited. но это тоже так больше для красоты. Достаточно посмотреть исходники того же VCL.
303
16 июня 2006 года
makbeth
1.0K / / 25.11.2004
Если наследовать от TObject - override не нужен, т.к. конструктор у TObject не виртуальный, а вот если наследовать от потомков TPersistent (вроде), например, от TForm, то он обязательно нужен.
inherited не нужен по той простой причине, что в TObject Create объявлен с пустым телом, и вызывать его смысла нет (хотя, скорее всего оптимизатор и так уберет этот "лишний" вызов).
339
19 июня 2006 года
verybadbug
619 / / 12.09.2005
а чё тему не закрыли? :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог