Есть классы:
Код:
1 2 3 4 5 6 7 | type TClassA = class
a: integer ;
end ;
type TClassB = class (TClassA)
b: integer ;
end ;
|
Есть динамический массив и переменные:
Код:
1 2 3 | var
DynArray: array of TClassA;
b,c,d:TClassB;
|
Есть код:
Код:
1 2 3 4 | SetLength(DynArray, 3 );
DynArray[ 0 ] := b;
DynArray[ 1 ] := c;
DynArray[ 2 ] := d;
|
Теперь вопрос: массив у меня типа TClassA, я записываю в него переменные типа TClassB. Компилятор такое допускает, поскольку класс B наследник класса A, но есть сомнения, что память для массива выделяется исходя из размера класса А и я рискую затереть часть данных из-за перекрытия ячеек памяти, ввиду того что переменные типа TClassB занимают на 4 байта больше памяти чем переменные типа TClassA. Так ли это?