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

Вопрос 34. Конструкторы и деструкторы

Конструктор – это специальная функция, являющаяся членом класса и имеющая то же самое имя, что и класс, и выполняющая заданные в ней действия при создании объекта. У одного класса может быть несколько конструкторов.

Пример:

class queue

{

int q[1];

int sloc, rloc;

queue (void); // конструктор

int qget (void);

void qput (int);

};

Деструктор — это специальный тип метода класса, который выполняется при удалении объекта класса. В то время как конструкторы предназначены для инициализации класса, деструкторы предназначены для очистки памяти после него.

Пример:

class queue

{ int q[10];

int sloc, rloc;

publiс:

queue (void); // конструктор

~queue (void); // деструктор

int q get (void);

void qput (int);

}; // объявлен класс queue с конструктором и деструктором

queue :: queue (void)

{rloc = sloc = 0; cout<< «Очередь инициализирована \n»;

} // описание конструктора

queue :: queue (void)

{

cout<< «Очередь разрушена \n»;

} // описание деструктора, который лишь выдает сообщение.

Вопрос 35. Наследование

Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (прародителя/ суперкласс) и добавляя, при необходимости, новые свойства и методы.

Основная форма наследования:

class <имя наследующего класса>: режим доступа < наследуемый класс> ;

или

class <производный> <базовый>;

Класс, который наследуется называется базовым классом, наследующий – производным (или потомком).

Режим доступа – это одно из ключевых слов private, protected, public.

Режимы доступа

Режим доступа

к элементу в базовом классе

Режим доступа

при наследовании

класса

Режим доступа

к элементу в производном классе

Private

publuc

Не доступен

Protected

Protected

public

Public

Private

protected

Не доступен

Protected

Protected

public

Protected

Private

private

Не доступен

Protected

Private

public

Private

Пример:

class X // Базовый класс

{ // Приватные элементы:

int i;

int j;

public:

void get_ij(void);

void put_ij(void);

};

Вопрос 36. Полиморфизм

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

Один из путей его реализации - это перегрузка функций. Две или более функции могут иметь одно и тоже имя, но отличаются друг от друга количеством и типом параметров.

Второй способ реализации полиморфизма - перегрузка операций. Когда перег­ружается знак операции, компилятор анализирует тип операндов и в зависимости от типа делает выбор.

Чтобы перегрузить операцию, нужно определить, что эта операция значит относительно класса, к которому она будет применяться. Для это­го создается специальная функция операции, которая определяет действие этой операции.

Основная форма задания функции-операции, являющейся членом класса:

<тип> <имя_класса> :: operator <знак операции> (список аргументов)

{ операторы, определяющие действия }

Полиморфизм иногда характеризуется одной фразой: "Один интерфейс – много методов". Это означает, что основной класс операций может быть оформлен в одном стиле, а конкретные действия могут быть различны­ми.

Соседние файлы в предмете Программирование