Az absztrakt adattípusok megvalósítására a Delphiben
osztályok segítségével van
lehetőség.
Ezeket külön unitokba tehetjük
és így elválaszthatjuk őket külön fordítási egységekbe.
Delphiben az operátor-túlterhelés csak rekordok esetén lehetséges, és ott se a szokásos módon. Az operátor alprogramokat a class operator kulcsszavakkal deklaráljuk, valamint nem használhatjuk a műveleti jeleket függvénynévként, így ehelyett az adott operátorhoz tartozó speciálisnevet kell megadni. Az operátor függvények címe nem kérdezhető le és nem hívhatók meg közvetlenül.
A felüldefiniálható operátorok az alábbiak: (Az A típus jelenti azt a típust, amelyre az operátort definiáljuk, a B tetszőleges típus.)
Szignatúra | A felüldefiniált művelet |
---|---|
Implicit(a : A) : B; | Implicit konverzió A-ról B-re |
Explicit(a : A) : B; | Explicit konverzió A-ról B-re |
Negative(a: A) : B; | - (unáris) |
Positive(a: A) : B; | + (unáris) |
Inc(a: A) : B; | Inc |
Dec(a: A) : B; | Dec |
LogicalNot(a: A) : B; | not |
BitwiseNot(a: A) : B; | not |
Trunc(a: A) : B; | Trunc |
Round(a: A) : B; | Round |
Equal(a: A; b: A) : Boolean; | = |
NotEqual(a: A; b: A) : Boolean; | <> |
GreaterThan(a: A; b: A) : Boolean; | > |
GreaterThanOrEqual(a: A; b: A) : Boolean; | >= |
LessThan(a: A; b: A) : Boolean; | < |
LessThanOrEqual(a: A; b: A) : Boolean; | <= |
Add(a: A; b: A): B; | + |
Subtract(a: A; b: A): B; | - |
Multiply(a: A; b: A): B; | * |
Divide(a: A; b: A): B; | / |
IntDivide(a: A; b: A): B; | div |
Modulus(a: A; b: A): B; | mod |
LeftShift(a: A; b: A): B; | shl |
RightShift(a: A; b: A): B; | shr |
LogicalAnd(a: A; b: A): B; | and |
LogicalOr(a: A; b: A): B; | or |
LogicalXor(a: A; b: A): B; | xor |
BitwiseAnd(a: A; b: A): B; | and |
BitwiseOr(a: A; b: A): B; | or |
BitwiseXor(a: A; b: A): B; | xor |
Példa:
Részletek: Unitok kinézete és Az adatrejtés elve