13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

15<br />

Данные в определении класса объявляются со своими типами и име<strong>на</strong>ми,<br />

а у член-функций указываются, кроме того, типы данных параметров. В<br />

рассматриваемом примере присутствуют указатели <strong>на</strong> данные Edit1, Edit2,<br />

Button1, Label1 классов TEdit, TButton, TLabel. Модификатор быстрого вызова<br />

_ _fastcall организует передачу аргументов методам VCL не через стек, а<br />

через процессорные регистры, если это не вещественные числа, не структуры<br />

данных и не функции. Лексема void является указателем <strong>на</strong> то, что функция<br />

Button1Click не возвращает никаких з<strong>на</strong>чений по окончании работы.<br />

Бестиповая функция TForm1, имя которой совпадает с именем класса,<br />

<strong>на</strong>зывается конструктором (constructor). Конструкторы (а их может быть несколько)<br />

пред<strong>на</strong>з<strong>на</strong>чены для автоматической инициализации данных в ходе<br />

порождения объектов.<br />

Класс формы является производным классом, и в его заголовке через<br />

двоеточие указано имя базового класса TForm с открытым типом доступа<br />

public. Производный класс <strong>на</strong>следует все члены базового класса, за исключением<br />

конструкторов и деструктора. В производном классе у<strong>на</strong>следованные<br />

члены могут иногда изменяться, а также добавляются новые члены.<br />

Одновременно с объявлением класса в файле заголовка задается одноимен<strong>на</strong>я<br />

с формой глобаль<strong>на</strong>я перемен<strong>на</strong>я, позволяющая обращаться к ней из<br />

любого файла проекта, <strong>на</strong>пример:<br />

extern PACKAGE TForm1 *Form1;<br />

Лексема PACKAGE является именем макроса, в котором содержится код экспорта<br />

из библиотеки пакетов BPL – Borland Package Library.<br />

Члены классов, объявленные в файле заголовка, определяются в файле<br />

кода формы в форматах:<br />

[Модификатор] [Тип] имяКласса :: имяЧлен-данного [= З<strong>на</strong>чение];<br />

[Модификатор][Тип] имяКласса :: имяЧлен-функции (списокПараметров)<br />

телоЧлен-функции<br />

В частности, каждой форме в ее файле кода автоматически прописывается<br />

пустой конструктор, получающий при вызове единственный параметр Owner,<br />

указывающий объекта-владельца, создающего форму. Например:<br />

TForm1 *Form1;<br />

_ _fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) {}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!