A.i.1. Что находится в списке инициализации конструктора композитного класса, подобъекты которого инициализируют конструкторы без аргументов?
Только параметры нужные для инициализации элементов композитного класса, т. к. подобъекты инициализируются умолчательными значениями, при этом конструктор подобъекта все равно будет вызываться первым.
- В каких случаях необходимо применять список инициализации компонентов класса?
В тех случаях, когда какие-то из компонентов класса — ссылки или константы или когда какой-то из компонентов подобъект, в котором есть ссылки или константы(ну или если ему необходимо передавать какие то значения.
- Когда в конструкторе композитного класса не указывается список инициализации подобъектов?
Тогда, когда подобъекты инициализируют конструкторы без аргументов.
- Когда вызываются деструкторы подобъектов композитного класса?
Тогда, когда вызываются и деструктор композитного класса, т. е. при выходе объекта из области видимости, при явном вызове деструктора композитного класса или при вызове delete.
- В каком порядке вызываются конструкторы подобъектов композитного класса?
В том порядке в котором они объявлены в композитном.
- Какой формат имеет обращение к полю X подобъекта Y композитного объекта Z в его компонентом методе и из внешней функции?
Если композитный класс был объявлен дружественным подобъекту, то при компонентном методе Y.X к приватным и публичным полям, а из внешней ф-ии возможен доступ только к публичным полям подобъекта в виде this.Y.X. (не забываем передовать в др. функцию ссылку на компонентный класс)
Если композитный класс не был объявлен дружественным, то компонентным методом X.Y только к публичным полям подобъекта, а из внешней только к дружественным методам подобъекта this.Y.X.
|
Какие отношения реализует композиция и наследование?
Композиция — содержит, наследование — принадлежит.
- В композитном классе Z есть 2 подобъекта класса Y, каждый из которых должен инициализироваться необязательно одинаковым значением целочисленного параметра. Какой формат должно иметь определение конструктора композитного класса Z?
class Z
{
Y y1,y2;
public:
Z (int x1, int x2): y1(x1), y2(x2) {};
};
- В композитном классе Z есть 2 подобъекта класса Y, каждый из которых должен инициализироваться одинаковым значением целочисленного параметра X. Какой формат должно иметь определение конструктора композитного класса Z?
class Z
{
Y y1,y2;
public:
Z (int x1): y1(x1), y2(x1) {};
};
- В композитном классе Z есть подобъекты классов X и Y, конструкторы которых имеют, соответственно. Целочисленный (i) и символьный (с) аргументы. Какой формат должно иметь определение конструктора композитного класса Z?
class Z
{
X x1;
Y y1;
public:
Z (int a1, char a2): x1(a1), y1(a2) {};
};
- Класс Z имеет 2 константные целочисленные компоненты X и Y. Какой формат должна иметь дефиниция(определение) конструктора класса Z с 2-мя формальными параметрами _X и _Y для инициализации полей X и Y?
class Z
{
const int X,Y;
public:
Z (int _X, int _Y): _X(x1), _Y(x2) {};
};
- Какой класс считается контейнерным (композитным)?
Контейнерные классы -- это универсальные шаблонные классы, предназначенные для хранения элементов заданного типа в смежных областях памяти. Стандарт C++ уже включает в себя большое количество контейнеров, как часть STL (Standard Template Library -- Стандартная Библиотека Шаблонов). (ЭТО Я ПОШУТИЛ И ЭТО УЧИТЬ НЕ НАДО!!!!)
|
Композитный класс – это класс, который содержит подобъекты другого класса.
- Какая последовательность вызова конструкторов в композитных (контейнерных) классах?
Сначала вызываются конструкторы подобъектов в порядке их объявления, а затем вызывается конструктор самого композитного класса.
- В каком порядке вызываются деструкторы в композитных (контейнерных) классах?
Наоборот, т. е. сначала деструктор композитного класса, а затем деструкторы подобъектов в порядке обратном их объявлению.
- В композитном классе House имеются 2 подобъекта класса Room, который в свою очередь является композитным классом, содержащим 2 подобъекта класса Furniture. Нужно определить порядок инициализации подобъектов перечисленных классов.
Сначала инициализируются Furniture в порядке их объявления, содержащиеся в первом объявленном Room, затем инициализируются Furniture в их порядке объявления, содержащиеся во втором объявленном Room, а затем уже House.
- Кто имеет доступ к приватным компонентам приватного подобъекта композитного (контейнерного) класса?
Только компонентные методы класса подобъекта имеют доступ к приватным компонентам подобъекта композитного класса, причем композитный класс должен быть объявлен как дружественный класс в подобъекте.