ИСП, КР1 (Object Pascal)
.docxТЕСТ №1. ООП НА ЯЗЫКЕ OBJECT PASCAL
-
Может ли класс содержать несколько конструкторов?
Может.
-
RTTI существует у всех классов или только у тех классов, которые имеют виртуальные методы?
У всех классов.
-
Если экземплярный метод не работает с полями объекта, передается ли в метод параметр self?
Передается во все методы.
-
В классе объявлено два поля типа byte, три свойства типа byte и два метода. Сколько байт в динамической памяти будут занимать объект класса?
InstanceSize объекта такого класса равен 8.
-
Можно ли в качестве параметра конструктора класса TC передать объект класса TC?
Можно.
-
Может ли класс содержать несколько свойств-массивов?
Может.
-
Указатель на VMT размещается в динамической памяти перед полями объекта или после полей?
Перед полями объекта.
-
Может ли тип индекса свойства-массива быть классом?
Да.
-
Можно ли объявить конструктор в секции protected?
Да.
-
Можно ли объявить свойство в секции private?
Да.
-
Можно ли перекрыть виртуальный метод, изменив его имя?
Нет.
-
Можно ли, используя переменную типа метакласс, получить доступ к полям объекта?
Такой возможности нет, значением переменной типа метакласс фактически является указатель на VMT соответствующего класса.
-
При вызове деструктора используется имя класса или имя объекта?
Используется имя объекта, например:
Man := TPerson.Create;
Man.Destroy;
-
Зависит ли размер переменной типа «указатель на метод» от количества параметров метода?
Нет, она занимает в памяти 8 байт и хранит одновременно ссылку на объект и адрес его метода.