Сравнительное объектно-ориентированное проектирование - 28 стр.

UptoLike

Составители: 

28
Прокомментируем другой фрагмент кода.
// Тип массива следов спрайтов на канве
typedef DynamicArray< DynamicArray < bool > > TTraceMap;
//TTracedSpriteList
class TTracedSpriteList:public TSpriteList
{
};
typedef bool __fastcall(__closure *OnMoveEvent)(TSprite* ,TPoint&);
//TSprite
class TSprite:public TObject
{
// Класс TSpriteList, объявленный friend, получает доступ
// к private и protected членам класса TSprite
friend class TSpriteList;
protected:
// Методы
void __fastcall virtual PaintPicture()=0;
};
Здесь
Служебное слово
typedef указывает на описание типа (подобно type в
Delphi).
Типом динамического массива, названного
TTraceMap, является
выражение
DynamicArray< DynamicArray < bool > >. Оно имеет смысл
двумерного массивамассива массивов») переменных логического типа.
Имя
DynamicArray является именем стандартного шаблона (template),
находящегося в библиотеке C++Builder. Это параметризованные, или
полиморфные (generic) функции. В Delphi нет аналогов шаблонам.
Аргументом шаблона является тип. В данном случае аргументом
внутреннего шаблона
DynamicArray является тип bool, а аргументом
внешнегосам возвращаемый тип внутреннего шаблона
DynamicArray<
bool >.
Класс
TTracedSpriteList является наследником класса TSpriteList. В заголовке
описания класса
TTracedSpriteList присутствует ссылка на наследник
TSpriteList с модификатором public. Модификатор public в данном
контексте означает, что все члены, наследуемые от
TSpriteList, сохраняют
свою, заданную предком, доступность и в наследнике (
public остается
public и т.д.). Если бы модификатором был protected, то все
наследуемые члены класса, объявленные в предке с модификаторами