Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
госы 2 раздел.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
39.8 Кб
Скачать

3.Конструктор копий.

    Конструктор копирования -- это специальный вид конструктора, получающий в качестве единственного параметра указатель на объект этого же класса:  T::T(const T&) { ... /* Тело конструктора */ }      где T -- имя класса.      Этот конструктор вызывается в тех случаях, когда новый объект создается путем копирования существующего:

  • при описании нового объекта с инициализацией другим объектом;

  • при передаче объекта в функцию по значению;

  • при возврате объекта из функции.

    Если программист не указал ни одного конструктора копирования, компилятор создает его автоматически. Такой конструктор выполняет поэлементное копирование полей. Если класс содержит указатели или ссылки, это, скорее всего, будет неправильным, поскольку и копия, и оригинал будут указывать на одну и ту же область памяти. 

4.Деструктор.

Деструктор -- это особый вид метода, применяющийся для освобождения памяти, занимаемой объектом. Деструктор вызывается автоматически, когда объект выходит из области видимости:

  • для локальных объектов -- при выходе из блока, в котором они объявлены;

  • для глобальных -- как часть процедуры выхода из main;

  • для объектов, заданных через указатели, деструктор вызывается неявно при использовании операции delete.

ВНИМАНИЕ Автоматический вызов деструктора объекта при выходе из области действия указателя на него не производится.

    Имя деструктора начинается с тильды (~), непосредственно за которой следует имя класса. Деструктор:

  • не имеет аргументов и возвращаемого значения;

  • не может быть объявлен как const или static;

  • не наследуется;

  • может быть виртуальным (см. раздел "Виртуальные методы").

    Если деструктор явным образом не определен, компилятор автоматически создает пустой деструктор.      Описывать в классе деструктор явным образом требуется в случае, когда объект содержит указатели на память, выделяемую динамически -- иначе при уничтожении объекта память, на которую ссылались его поля-указатели, не будет помечена как свободная. Указатель на деструктор определить нельзя. 

5.Наследование.

Наследование представляет собой способность производного класса наследовать характеристики существующего базового класса. Простыми словами это означает, что, если у вас есть класс, чьи элементы данных или функции-элементы могут быть использованы новым классом, вы можете построить этот новый класс в терминах существующего (или базового) класса. Новый класс в свою очередь будет наследовать элементы (характеристики) существующего класса. Использование наследования для построения новых классов сэкономит вам значительное время и силы на программирование. Объектно-ориентированное программирование широко использует наследование, позволяя вашей программе строить сложные объекты из небольших легко управляемых объектов.

Наследование (inheritance) - это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование является важным, поскольку оно позволяет поддерживать концепцию иерархии классов (hierarchical classification). Применение иерархии классов делает управляемыми большие потоки информации. Например, подумайте об описании жилого дома. Дом - это часть общего класса, называемого строением. С другой стороны, строение - это часть более общего класса - конструкции, который является частью ещё более общего класса объектов, который можно назвать созданием рук человека. В каждом случае порождённый класс наследует все, связанные с родителем, качества и добавляет к ним свои собственные определяющие характеристики. Без использования иерархии классов, для каждого объекта пришлось бы задать все характеристики, которые бы исчерпывающи его определяли. Однако при использовании наследования можно описать объект путём определения того общего класса (или классов), к которому он относится, с теми специальными чертами, которые делают объект уникальным. Наследование играет очень важную роль в OOP.