Главная страница
    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.019 c
14-87053
Лёха2003
2003-01-05 14:51
2003.01.27
Создание ядра ОС


7-87150
vidiv
2002-11-11 12:37
2003.01.27
Мессагу на экран.


3-86638
Flagman
2003-01-06 22:56
2003.01.27
Удаление записей через триггер


1-86806
denisww
2003-01-18 09:08
2003.01.27
Перетаскивание файлов(HELP!)


14-87110
DDDeN
2003-01-03 18:34
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский