![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
![]()
Приветствую. Не думал, что буду спрашивать о Delphi... Но тем не менее.
Создаю класс Код:
1) class это просто наследник TObject ? 2) Можно ли перегрузить операторы, например +, := и т.д. В манах сказано, что только для структур. Зачем тогда вообще эти классы нужны? 3) Зачем писать ключевые слова constructor/destructor, если они автоматически не вызываются, как в C++, например. 4) Где будет создан объект: в стеке или в динамической памяти? Код:
Код:
Код:
6) Можно ли вызвать конструктор или каким-либо иным образом создать новый объект внутри метода класса? 7) Также ругань идет на перегруженный конструктор: Код:
Единственный способ стать умнее - играть с более умным противником.
|
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]() Цитата:
конструкторы например указатель на созданный объект возвращают.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Complex = class и Complex = class(TObject) равносильно
Экземпляр класса, другими словами объект, создается в динамической памяти new для создания объекта ни разу конструкторы могут быть одно и разноименными
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 21.04.2018 в 21:20. |
![]() |
![]() |
![]() |
#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); Цитата:
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||||
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
![]()
Pavia, спасибо за развернутый ответ!
Цитата:
Вопросы 6 и 7 касались ситуации когда Complex объявлен как object. Код:
6) Можно ли вызвать конструктор или каким-либо иным образом создать новый объект внутри метода класса (type Complex = object ...) 7) Можно ли иметь в object несколько перегруженных конструкторов и передавать их в new ? Код:
Код:
Единственный способ стать умнее - играть с более умным противником.
|
|
![]() |
![]() |
![]() |
#6 | |||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]() Цитата:
Цитата:
Код:
Цитата:
А внутри метода можете вызывать сколько надо. Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|||
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
![]()
Пардон, как это? А что же тогда передается в оператор new? Delphi там хочет видеть только то,что помечено словом constructor.
Код:
Код:
![]() Я имел ввиду, можно ли как-то исхитрится в такой конструкции и Код:
Код:
![]() ![]() В Вашем примере с class и object да. А вот если есть только object. И внутри одного из методов этого object надо вызвать конструктор.
Единственный способ стать умнее - играть с более умным противником.
|
![]() |
![]() |
![]() |
#8 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() |
![]() |
![]() |
![]() |
#9 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
![]()
Что за бред я только что прочитал?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
![]() |
![]() |
![]() |
#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 |