Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Вниз

Как же конструируется и инициализируется объект в Object Pascal   Найти похожие ветки 

 
Оливейра   (2003-01-09 20:54) [0]

Вкратце начало тут:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1041965766&n=3

Прошу высказываться :-) Заранее спасибо.


 
Ketmar   (2003-01-09 21:01) [1]

мда. какая дискуссия... а все от нежелания выучить десяток асм-команд %-(

Satanas Nobiscum! 09-Jan-XXXVIII A.S.


 
vuk   (2003-01-09 21:04) [2]

>Прошу высказываться
А может ещё и голосование устроим? :o)
Я же вчера об этом писал. Вы читали?


 
Юрий Зотов   (2003-01-09 22:05) [3]

> Оливейра © (09.01.03 20:54)

Загляните в модуль System, посмотрите _ClassCreate - все и увидите. Там Ассемблер, а на Паскале это выглядело бы примерно так.

Пусть мы написали такой конструктор:

constructor TMyClass.Create;
begin
// Наш код
end;

А компилятор превратит его примерно вот во что:

constructor TMyClass.Create;
begin
Result := NewInstance;
try
InitInstance; // примерно ZeroMemory(Result, InstanceSize)
... // Наш код
except
Destroy;
FreeInstance;
raise
end
end;

Это конечно, не реальный код, а всего лишь схема. Но, надеюсь, понятная.


 
Alex Konshin   (2003-01-09 22:15) [4]

Ты забыл еще упомянуть, что компилятор вставляет проверку: вызывается ли конструктор для создания объекта, или объект уже создан и нужно только его инициализировать (например, вызов inherited Create). Во втором случае не будет вызова NewInstance и обнуления, то есть, почти как при вызове обычного метода.
У меня тут Delphi нет, могу ошибаться, но если память мне не изменяет, то он проверяет значение регистра DL.


 
vuk   (2003-01-09 22:18) [5]

to Alex Konshin:
Именно так. Флаг передается в регистре DL.


 
Оливейра   (2003-01-09 23:56) [6]

Огромное спасибо.
Имхо минус OP в том, что компилятор многое прячет; схема сложная но стройная.

> Ketmar
Вы же значок хотели, помнится? :) А отвечать не хотите :(


 
vuk   (2003-01-10 00:19) [7]

>Имхо минус OP в том, что компилятор многое прячет; схема
>сложная но стройная.
Схема как раз простая как пять копеек: попробовали создать, не удалось - прибили. А C++, если не ошибаюсь, неявная инициализация гораздо сложнее, особенно в случае с множественным наследованием.



 
Anatoly Podgoretsky   (2003-01-10 07:55) [8]

Оливейра © (09.01.03 23:56)
Имхо в этом плюс



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
4-87206
dkDimon
2002-12-12 18:46
2003.01.27
Не знаю как обозвать тему


6-86998
Serj_z
2002-11-28 20:13
2003.01.27
Проблема в том что 98 ти ХР не видят друг друга без хаба


6-87003
boolean
2002-11-30 14:38
2003.01.27
Мастера, подскажите


1-86880
SpyX
2003-01-18 17:10
2003.01.27
Директория программы


1-86933
ska
2003-01-10 18:08
2003.01.27
Индикация данных в цикле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский