Конструкторы и деструкторы при наследовании
Конструкторы не наследуются — они создаются в производном классе (если не определены программистом явно). Система поступает с конструкторами следующим образом:
· если в базовом классе нет конструкторов или есть конструктор без аргументов (или аргументы присваиваются по умолчанию), то в производном классе создание конструктора можно опустить — компилятор автоматически создаст конструктор копирования и конструктор без аргументов;
· если в базовом классе все конструкторы с аргументами, производный класс обязан иметь конструктор, в котором явно должен быть вызван конструктор базового класса;
· при создании объекта производного класса сначала вызывается конструктор базового класса, затем — производного. Это автоматически выполняет компиляторэ
Деструктор класса, как и конструкторы, не наследуется, а создается. С деструкторами система поступает следующим образом:
· при отсутствии деструктора в производном классе компилятор создает деструктор но умолчанию;
· деструктор базового класса вызывается в деструкторе производного класса автоматически независимо от того, определен он явно или создан компилятором;
· деструкторы вызываются (для уничтожения объектов) в порядке, обратном вызову конструкторов.
· создание и уничтожение объектов выполняется по принципу LIFO: последним создан — первым уничтожен.
Дата добавления: 2015-07-30; просмотров: 1290;