Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 469 470 [471] 472 473 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#7051
,
|
|
|
|
Цитата jack128 @ тебе - не придет, а тому кто будет наследоваться от твоего производного класса - вполне может прийти ;-) Я боюсь, что это будет скорее его вина. Когда ты пишешь код перед вызовом базового конструктора - ты берешь НА СЕБЯ ответственность за то, что ты делаешь, потому что да, это поведение в принципе идет вразрез с тем, которая была заложена создателем класса предка. Добавлено Хотя честно говоря во многом надуманная проблема. Реально не так часто высовы виртуальных методов в конструкторе приводят к чему-то подобному. А вот пользы от возможности их вызывать можно извлечь много. Кстати, особенно тут хороши виртуальные классовые методы, чего нет ни в плюсах, ни в джаве. А они и проблем никаких не вызовут в принципе |
|
Сообщ.
#7052
,
|
|
|
|
Цитата --Ins-- @ А вот пользы от возможности их вызывать можно извлечь много А ещё лучше - прорабатывать архитектуру так, чтобы не было необходимости делать такие вызовы. |
|
Сообщ.
#7053
,
|
|
|
|
Цитата --Ins-- @ А вот пользы от возможности их вызывать можно извлечь много И какая пользва в виртуальных конструкторах? |
|
Сообщ.
#7054
,
|
|
|
|
Цитата Flex Ferrum @ А ещё лучше - прорабатывать архитектуру так, чтобы не было необходимости делать такие вызовы. Проработать то можно, но она будет кривее. Удобно когда разработчик класса берет на себя больше, а клиенту оставляет меньше, чем когда клиент обязан помнить что и как ему нужно делать с тем или иным объектом |
|
Сообщ.
#7055
,
|
|
|
|
Цитата jack128 @ как бы создателю класса Object виднее, нужно экземпляры это класса класть в контейнер или нет. И если он решил, что нужно, значит нужно. Зачем объекту класть себя в какой-то (глобальный ?) контейнер? Не слишком ли сильная связанность?Впрочем, в С++ я тоже могу так делать. |
|
Сообщ.
#7056
,
|
|
|
|
Цитата KILLER @ И какая пользва в виртуальных конструкторах? Виртуальные конструкторы - это совсем другое, речь сейчас не о них. А польза от них - это встроенная в язык фабрика, которая для инстанцирования использует позднее связывание Добавлено Цитата D_KEY @ Впрочем, в С++ я тоже могу так делать. Не можешь. Ты можешь полодить недоделанный объект разве что, ты не можешь гарантировать чтобы написанный тобой в конструкторе код положит объект в контейнер после вызова всех конструкторов. Конструкторы потомков будут выполнены после этого помещения |
|
Сообщ.
#7057
,
|
|
|
|
Цитата --Ins-- @ А польза от них - это встроенная в язык фабрика, которая для инстанцирования использует позднее связывание Зачем для инстанцирования использовать позднее связывание? Нужен объект - создай его. А это получается как? Ну да... я же забыл, у вас конструктор - это же метод Initialize по сути, мало чего общего имеющий с настоящим конструктором, который выделяет память и т.д. |
|
Сообщ.
#7058
,
|
|
|
|
Цитата --Ins-- @ Проработать то можно, но она будет кривее. Ты уверен? Вот я - нет... Т. е. может быть такая архитектура и будет позволять делать некоторые вещи удобнее, но правильнее она от этого не станет... |
|
Сообщ.
#7059
,
|
|
|
|
Цитата --Ins-- @ Не можешь. Ты можешь полодить недоделанный объект разве что, ты не можешь гарантировать чтобы написанный тобой в конструкторе код положит объект в контейнер после вызова всех конструкторов. Конструкторы потомков будут выполнены после этого помещения Ага, при таком раскладе будто ты ложишь "доделанный" объект? Если он доделаный, зачем после AfterConstruction вызывать еще и конструкторы потомков? Он ведь уже доделанный и совершенный |
|
Сообщ.
#7060
,
|
|
|
|
Цитата D_KEY @ Зачем объекту класть себя в какой-то (глобальный ?) контейнер? Не слишком ли сильная связанность? без понятия. Хотя я так иногда делал, но там это было для отладки, какой то хитрый мемлик был. А вообще я так на наш код посмотрел, есть один товарищ, который активно AfterContruction использует, но там везде можно заменить виртуальным конструктором этот код. А так чтоб по делу, только один случай был, для своего InterfacedObject'a. |
|
Сообщ.
#7061
,
|
|
|
|
Цитата --Ins-- @ Не можешь. Ты можешь полодить недоделанный объект разве что, ты не можешь гарантировать чтобы написанный тобой в конструкторе код положит объект в контейнер после вызова всех конструкторов. Конструкторы потомков будут выполнены после этого помещения А, вы про это(извините, работа ). Ну да, тут фактически в фабрике можно сделать. Но я так и не понял, зачем нужна такая сильная связанность? Юнит-тесты как писать будем? Нужно хотя бы обеспечить возможность передачи псевдоконтейнера.Может нам пора перейти к коду ? Или там будет все то же самое, что и раньше?Ты про ссылки-то не хочешь ответить? |
|
Сообщ.
#7062
,
|
|
|
|
Цитата KILLER @ Зачем для инстанцирования использовать позднее связывание? Нужен объект - создай его. А это получается как? Ну да... я же забыл, у вас конструктор - это же метод Initialize по сути, мало чего общего имеющий с настоящим конструктором, который выделяет память и т.д. Ну все, приехали. Теперь открывай для себя инстанцирующие паттерны - всякие там фабрики и т.д. Добавлено Цитата KILLER @ Если он доделаный, зачем после AfterConstruction вызывать еще и конструкторы потомков? Я не знаю что ты там куришь, но после AfterConstruction никакие конструкторы не вызываются Добавлено Цитата Flex Ferrum @ Ты уверен? Вот я - нет... Т. е. может быть такая архитектура и будет позволять делать некоторые вещи удобнее, но правильнее она от этого не станет... Определение понятия правильности - в студию Добавлено Цитата D_KEY @ Ты про ссылки-то не хочешь ответить? Перепости, плиз, мне неохота искать что именно ты имеешь в виду |
|
Сообщ.
#7063
,
|
|
|
|
Цитата --Ins-- @ Ну все, приехали. Теперь открывай для себя инстанцирующие паттерны - всякие там фабрики и т.д. Так а причем тут фабрики? Я их для себя открыл еще несколько лет назад. Я спрашивал зачем конструктор нужен виртуальным? В чем его удобность то? Цитата --Ins-- @ Я не знаю что ты там куришь, но после AfterConstruction никакие конструкторы не вызываются Ну вот же ты написал: Цитата --Ins-- @ ты не можешь гарантировать чтобы написанный тобой в конструкторе код положит объект в контейнер после вызова всех конструкторов. Конструкторы потомков будут выполнены после этого помещения Или ты это писал имея ввиду С++ ? Так если так, ты уточняй о чем речь ведешь. А то же это предложение можно по разному интерпретировать, достаточно поменять интонацию и ударение перенести на другую часть предложения. |
|
Сообщ.
#7064
,
|
|
|
|
Цитата KILLER @ Так а причем тут фабрики? Я их для себя открыл еще несколько лет назад. Я спрашивал зачем конструктор нужен виртуальным? В чем его удобность то? Повторяю: Цитата --Ins-- @ это встроенная в язык фабрика, которая для инстанцирования использует позднее связывание Цитата KILLER @ Или ты это писал имея ввиду С++ ? Ес-но. И не вижу смысло отдельно это уточнять, когда говорю что я смогу, а D_KEY - не сможет. Если бы ты читал прежде чем писать, и непонятков бы не было Добавлено Цитата KILLER @ Я их для себя открыл еще несколько лет назад. Непохоже Раз задаешь вопрос в духе - зачем позднее связывание, нужен объект - создай |
|
Сообщ.
#7065
,
|
|
|
|
Цитата --Ins-- @ это встроенная в язык фабрика, которая для инстанцирования использует позднее связывание Да, только в настоящей фабрике метод создания объектов никак не связан с конструкторами этих объектов. А в твоей "фабрике", у тебя конструктор выполняет роль создателя производных объектов, путем вызова по сути производных конструкторов, причем тех, о которых он в принципе знать не должен, на этапе создания объекта. Так в чем удобность то такого подхода, ты объяснишь ? Добавлено Цитата --Ins-- @ Непохоже Раз задаешь вопрос в духе - зачем позднее связывание, нужен объект - создай ![]() Я задал не такой вопрос, а немного другой. У тебя роль создателя "нужного" класса играет конструктор. Вот я и спрашиваю, зачем этим должен заниматься конструктор? В чем прикол? Чем это лучше? ты же выше написал что: Цитата --Ins-- @ А вот пользы от возможности их вызывать можно извлечь много. Я пытаюсь выудить из тебя - что за пользу можно извлечь из этого? А ты мне в фабрики тыкаешь. Так и объясни где польза писать запутанный код ? Фабрика - это вообще паттерн проектирования. А когда нужен паттерн - его берут и юзают. А у тебя это встроено в сам язык, да еще и через метод создания объекта. |