[an error occurred while processing this directive]
Потому что C++ отличается от Delphi
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено smav 09 июня 2005 г. 14:50
В ответ на: Почему с точки зрения С++ конструктор базового класса не может быть виртуальным? отправлено <font color=gray>_vladimir</font> 09 июня 2005 г. 13:01

В отличие от Delphi в C++ нет понятия ссылки на класс (class of) как в Delphi. В Delphi ссылка на класс - это по сути указатель на vmt. В C++ указатель на VMT всегда скрыт и устанавливается при создании экземпляра класса в момент вызова конструктора.
В делфи конструктор - это просто частный случай классового метода (class function) который вызывается не для экземпляра класса, а для типа или ссылка на класс.

Другие важные отличия:
В C++ конструкторы вызываются неявно. Поэтому у класса не может быть нескольких конструкторов с одинаковыми типами параметров.

Конструкторы базовых классов в С++ также вызываются автоматически, в отличие от делфи, где они вызываются при необходимости вручную. В связи с этим, если из конструктора базового класса вызывается некоторый виртуальный метод и он перекрыт в новом классе, при создании нового класса вызовется конструктор базового класса и он вызовет старую версию метода.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru