ВУЗ:
Составители:
Рубрика:
29
public и protected, приобрели бы в наследнике модификатор
protected.
• В описании
typedef bool __fastcall(__closure *OnMoveEvent)(TSprite* ,TPoint&);
именем описываемого типа является OnMoveEvent. Сам тип является
методом класса с двумя параметрами типа
TSprite* и TPoint&, который
возвращает тип
bool. То, что OnMoveEvent именно метод класса, а не
просто функция, отмечено модификатором
__closure. Тип TPoint
является стандартным и описан в библиотеке C++Builder. Знак
& служит
для описания «параметра по ссылке» – аналог служебного слова
var в
Delphi.
• Модификаторы доступа к членам класса в C имеют слегка иной смысл,
нежели в Delphi. Все члены с модификатором
private доступны только
методам этого же класса вне зависимости от того, в каком модуле класс
описан. Члены класса с модификатором
protected – только методам
своего класса и классов-наследников. В Delphi члены с модификаторами
private и protected доступны всему коду того модуля, в котором
описан класс. Однако в C++ существует способ сделать доступными
защищенные (
private и protected) члены класса другому классу. Для
этого класс, методам которого разрешается доступ к защищенным
членам, описывается как
friend. Примером является декларация из
описываемого кода
friend class TSpriteList. Она говорит, что классу
TSpriteList разрешается доступ ко всем без исключения членам класса
TSprite.
• Обратите внимание на синтаксис описания абстрактного метода в C++
void __fastcall virtual PaintPicture()=0;
Реализация классов спрайтов
Ниже приведен полный код реализации классов спрайтов, описанных в хэдере.
Комментарий к коду приводится непосредственно в тексте кода.
#include <vcl.h> //Модуль, несущий определения библиотеки VCL
/*Директива #pragma hdrstop означает окончание списка хэдеров,
компилируемых предварительно для использования в нескольких
файлах-исходниках одного проекта. В данном случае в этом списке
есть только файл vcl.h.
Директива #pragma hdrstop автоматически добавляется средой.*/
#pragma hdrstop
#include "uSprite.h" //хэдер нашего исходника
/*Директива #pragma package(smart_init) служит для «разумной»
последовательности в инициализации модулей при формировании
кода проекта. Она
также автоматически добавляется средой
при создании нового модуля.*/
#pragma package(smart_init)
Страницы
- « первая
- ‹ предыдущая
- …
- 27
- 28
- 29
- 30
- 31
- …
- следующая ›
- последняя »