|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.04.2018, 20:34 | #1 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
class vs object
Приветствую. Не думал, что буду спрашивать о Delphi... Но тем не менее.
Создаю класс Код:
1) class это просто наследник TObject ? 2) Можно ли перегрузить операторы, например +, := и т.д. В манах сказано, что только для структур. Зачем тогда вообще эти классы нужны? 3) Зачем писать ключевые слова constructor/destructor, если они автоматически не вызываются, как в C++, например. 4) Где будет создан объект: в стеке или в динамической памяти? Код:
Код:
Код:
6) Можно ли вызвать конструктор или каким-либо иным образом создать новый объект внутри метода класса? 7) Также ругань идет на перегруженный конструктор: Код:
Единственный способ стать умнее - играть с более умным противником.
|
21.04.2018, 20:43 | #2 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
конструкторы например указатель на созданный объект возвращают.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
21.04.2018, 21:12 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Complex = class и Complex = class(TObject) равносильно
Экземпляр класса, другими словами объект, создается в динамической памяти new для создания объекта ни разу конструкторы могут быть одно и разноименными
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 21.04.2018 в 21:20. |
21.04.2018, 21:24 | #4 | ||||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Sam Gold
Так точно. Цитата:
Цитата:
В динамической. На стеке только структуры. Объект класс создать при помощи new нельзя. Если хотите создать C := Complex.Create(10,10); Цитата:
Так для object как раз через new надо создавать. А потом вызывать Init(10,10) соответственно конструктор надо будет переписать на procedure init(A : real; B : real); Цитата:
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||||
21.04.2018, 21:39 | #5 | |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
Pavia, спасибо за развернутый ответ!
Цитата:
Вопросы 6 и 7 касались ситуации когда Complex объявлен как object. Код:
6) Можно ли вызвать конструктор или каким-либо иным образом создать новый объект внутри метода класса (type Complex = object ...) 7) Можно ли иметь в object несколько перегруженных конструкторов и передавать их в new ? Код:
Код:
Единственный способ стать умнее - играть с более умным противником.
|
|
21.04.2018, 22:39 | #6 | |||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Цитата:
Код:
Цитата:
А внутри метода можете вызывать сколько надо. Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|||
22.04.2018, 00:16 | #7 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
Пардон, как это? А что же тогда передается в оператор new? Delphi там хочет видеть только то,что помечено словом constructor.
Код:
Код:
Я имел ввиду, можно ли как-то исхитрится в такой конструкции и Код:
Код:
В Вашем примере с class и object да. А вот если есть только object. И внутри одного из методов этого object надо вызвать конструктор.
Единственный способ стать умнее - играть с более умным противником.
|
22.04.2018, 02:47 | #8 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,869
|
|
22.04.2018, 03:11 | #9 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Что за бред я только что прочитал?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
22.04.2018, 17:33 | #10 | |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
Спасибо отписавшимся по делу.
Цитата:
Очень информативно и по делу.
Единственный способ стать умнее - играть с более умным противником.
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
в чем отличие class от object? | illuminates | Общие вопросы Delphi | 8 | 06.06.2012 15:21 |
Ошибка при подключении к базе данных Object reference not set to an instance of an object. | lowercase | ASP.NET | 1 | 20.11.2011 22:48 |
Отличие type T = Object от type T = Class? | Warn | Общие вопросы Delphi | 8 | 04.11.2011 19:20 |
Ошибка " Record, object or class type required " (Запись, объектный или классический тип требовались) | kta87 | Помощь студентам | 2 | 28.02.2010 10:04 |
Record, object or class type required | @mazonk@ | Помощь студентам | 0 | 07.06.2009 13:03 |