Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Виртуальный конструктор. Для чего он нужен? 
V
    Опции темы
Alca
Дата 5.10.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



В чём отличие? И для чего конструктор объявлять виртуальным?
Код

virtual __fastcall TfrmLogon(TComponent* AOwner);
__fastcall TfrmMain(TComponent* Owner);



--------------------
PM WWW ICQ Skype Jabber   Вверх
SenkraD
Дата 5.10.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



Alca,  конструктор не может быть виртуальным, также как и деструктор не может быть статическим!!!


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Fazil6
Дата 5.10.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(SenkraD @  5.10.2007,  12:07 Найти цитируемый пост)
Alca,  конструктор не может быть виртуальным

в билдере может. Используется в VCL на подобии фабрики. Для создания компонента на форме получают метакласс и через интерфейс TComponent создают экземпляр этого TComponent. Из-за того, что конструктор виртуальный создается экземпляр нужного класса наследника TComponrnt
PM MAIL   Вверх
JackYF
Дата 5.10.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(Fazil6 @  5.10.2007,  12:18 Найти цитируемый пост)
в билдере может. Используется в VCL на подобии фабрики. Для создания компонента на форме получают метакласс и через интерфейс TComponent создают экземпляр этого TComponent. Из-за того, что конструктор виртуальный создается экземпляр нужного класса наследника TComponrnt 

обалдеть, ну и извратились smile не знал...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
ParaPik
Дата 20.1.2009, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 8.1.2009

Репутация: нет
Всего: нет



В CodeGear всегда что-нибудь не по стандарту да всунут в C++. Да и их космическая иерархия тоже заслуживает обсуждения.
PM MAIL   Вверх
Lazin
Дата 20.1.2009, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



necromanty - level up smile

Добавлено через 21 секунду
Цитата(ParaPik @  20.1.2009,  16:22 Найти цитируемый пост)
Да и их космическая иерархия тоже заслуживает обсуждения. 

нормальная иерархия
PM MAIL Skype GTalk   Вверх
Alca
Дата 20.1.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



 smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alexeis
Дата 20.1.2009, 17:32 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



Цитата(ParaPik @  20.1.2009,  15:22 Найти цитируемый пост)
В CodeGear всегда что-нибудь не по стандарту да всунут в C++

  Я бы не сказал что тут дело в С++, скорее дело в PascalImpementation. 

  Говорят C++ Builder 2009 намного лучше соответствует стандарту. У MS тоже полно расширений. Это совсем неплохо. Было бы хуже другое, если бы без них невозможно было бы писать код. 
  Вот я считаю, компилятор неудобный если на нем неудобно писать переносимый код в следствии несоответствия стандарту. А дополнения дело добровольное, хош используй хош нет.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Vyacheslav
Дата 20.1.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(Fazil6 @  5.10.2007,  12:18 Найти цитируемый пост)
в билдере может. Используется в VCL на подобии фабрики. Для создания компонента на форме получают метакласс и через интерфейс TComponent создают экземпляр этого TComponent. Из-за того, что конструктор виртуальный создается экземпляр нужного класса наследника TComponrnt 

Я не согласен с таким определением.  Виртуальность конструктора - это скорее всего просто напоминание того, что конструктор VCL-класса( под VCL-классом понимается класс, производный от TObject)  в некторых случаях ведет себя не так как конструктор не VCL-класса, то есть не в соответствии со стандартом.
Это во- первых нарушение порядка вызова "конструкторов" базовых дельфийных классов.
Во-вторых, виртуальные функции при вызове в конструкторе ведут себя как виртуальные smile. То есть вызвав виртуальную функцию в конструкторе базового класса и переопределив ее в производном, можно фактически изменить( переопределить) поведение конструктора базового класса   
ЗЫ. Конструкторы обычных С++ классов при этом ведут себя в соответсвии со станадартом


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0679 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.