Показать сообщение отдельно
  #1  
Старый 03.09.2015, 15:54
mw_Kronos mw_Kronos вне форума
Прохожий
 
Регистрация: 12.01.2014
Сообщения: 12
Версия Delphi: RadStudio XE5
Репутация: 10
По умолчанию Классы в динамических массивах

Есть классы:

Код:
type TClassA = class
  a:integer;
end;

type TClassB = class(TClassA)
  b:integer;
end;

Есть динамический массив и переменные:

Код:
var 
    DynArray:array of TClassA;
    b,c,d:TClassB;

Есть код:

Код:
  SetLength(DynArray, 3);
  DynArray[0] := b;
  DynArray[1] := c;
  DynArray[2] := d;

Теперь вопрос: массив у меня типа TClassA, я записываю в него переменные типа TClassB. Компилятор такое допускает, поскольку класс B наследник класса A, но есть сомнения, что память для массива выделяется исходя из размера класса А и я рискую затереть часть данных из-за перекрытия ячеек памяти, ввиду того что переменные типа TClassB занимают на 4 байта больше памяти чем переменные типа TClassA. Так ли это?
Ответить с цитированием