Форум: "Потрепаться";
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];
ВнизВопрос о распространнёности Delphi в мире. Найти похожие ветки
← →
vuk (2002-02-15 17:32) [73]to VuDZ:
>то есть Вы хотите вызывать неизвестный конструктор неизвестного
>класса
Почти. Имеется в виду возможность вызова конкретного конструктора неизвестного класса. В Object Pascal есть виртуальные конструкторы (а также виртуальные метода класса). У них, как и у виртуальных методов экземпляра, при введении формируются ограничения на состав параметров.
Например, у TComponent есть такой виртуальный конструктор:
constructor Create( AOwner : TComponent ); virtual;
Классы-потомки перекрывают этот виртуальный конструктор для обеспечения своего правильного конструирования. И вот как раз такой конструктор и взывается. Наличие его гарантируется тем, как объявляется ссылка на класс и признаком виртуальности.
Поэтому, если ссылка на класс, определена так:
TComponentClass = class of TComponent;
то можно быть уверенным, что имея такую ссылку, можем вызывать вышеописанный конструктор.
Концептуально ссылки на класс можно считать метаклассами, то есть такими специальными классами, экземплярами которых являются обычные классы. В вышеописанном примере экземплярами метакласса TComponentClass можно считать TComponent и всех его наследников.
Страницы: 1 2 3 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c