Главная » Delphi » Delphi 2006 – Перегрузка преобразований типов

0

Помимо перегрузки операторов система Delphi допускает и перегрузку операций преобразования типов. Явное преобразование формируется функцией-оператором Explicit, а неявное — функцией implicit, результатом которых является перегружаемый тип данных, используемый в преобразовании. Так, например, преобразование нашего вектора в целое число может соответствовать определению его длины, а преобразование к дробному типу может происходить в виде вычисления суммы его элементов.

type TVector = class

public

FVector: array of Double;

class operator Add( a,b: TVector ): TVector; class operator Multiply( a,b: TVector ): TVector;

class operator Explicit( a: TVector ): Double; class operator Explicit( a: TVector ): Integer;

constructor Create(len: Integer); function len: Integer;

end;

class operator TVector.Explicit( a: TVector ): Integer; begin

Result := a.len; // приводим к целому типу через возвращение длины вектора end;

class operator TVector.Explicit( a: TVector ): Double; var

sum: Double; i: Integer; begin

sum := 0;

for i := 0 to Integer(a)-1 do

sum := sum + a.FVector[i]; Result .:= sum; end;

Здесь в качестве верхней границы цикла мы используем число элементов вектора, которое получаем преобразованием его к целому типу.

^^ Возможность перегрузки операторов возможна как для классов, так и для записей ^^ (record). В записях также разрешены конструкторы с непустым списком параметров, объявление невиртуальных методов и описание статических методов и процедур.

Бобровский С. И. Технологии Delphi 2006. Новые возможности. — СПб.: Питер, 2006. — 288 е.: ил.

По теме:

  • Комментарии