Search Header Logo
Лекция 2. Конструкторы и деструкторы

Лекция 2. Конструкторы и деструкторы

Assessment

Presentation

Computers

University

Practice Problem

Medium

Created by

Ящун Викторовна

Used 5+ times

FREE Resource

19 Slides • 12 Questions

1

ЛЕКЦИЯ 2.
КОНСТРУКТОРЫ И ДЕСТРУКТОРЫ

2

Poll

Как Вы относитесь к предстоящему изучению новой темы на лекции?

С интересом

Негативно

Нейтрально

С тревогой

3

media
media

ЗАЧЕМ НУЖНЫ КОНСТРУКТОРЫ?

media

После создания объекта Point2D ничего не известно о значениях x и y
Cозданные объекты находятся в неопределенном состоянии
Это нарушает одно из положений ООП

4

ЗАЧЕМ НУЖНЫ КОНСТРУКТОРЫ?

media

После размещения нового объекта в памяти устройства всегда автоматически вызывается специальный метод, который называется конструктор

В конструкторе выполняется установка начального состояния нового созданного объекта

5

Можно описать несколько конструкторов в одном классе (перегрузка)
Конструктор по умолчанию - конструктор без параметров

Если явно не описан ни один конструктор, то будет автоматически создан конструктор по умолчанию

ОПРЕДЕЛЕНИЯ

Конструктор – это функция-член класса, которая вызывается автоматически при создании статического или динамического объекта класса

media

6

Multiple Choice

Что такое конструктор в ООП?

1

Метод, который сохраняет данные

2

Метод, который вызывается при создании объекта класса

3

Метод, который управляет памятью

4

Процедура, выполняющая операции с данными

7

СВОЙСТВА КОНСТРУКТОРА

media

8

Multiple Choice

Какое имя должен иметь конструктор в C++?

1

Любое имя

2

Имя класса

3

Имя метода

4

Имя переменной

9

ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ

media
media
media
media
media

- После определения, перед телом конструктора, ставится двоеточие и через запятую прописывается инициализация переменных
- В списке инициализации переменные следует прописывать в порядке их объявления в классе
- Список инициализации – это единственный способ инициализации константных переменных в конструкторе

10

ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ

media
media
media

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

11

КОНСТРУКТОР ПО УМОЛЧАНИЮ

Конструктор по умолчанию - конструктор, который можно вызывать без передачи параметров

media
media
media
media
media
media
media

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

12

Multiple Choice

Какой из следующих вариантов является конструктором по умолчанию?

1

Point2D() { }

2

Point2D(float x, float y) { }

3

Point2D(int a) { }

4

Point2D(Point2D obj) { }

13

ПЕРЕГРУЗКА КОНСТРУКТОРОВ

media
media
media

​Так как конструкторы могут иметь произвольные параметры, то в одном классе можно объявлять несколько конструкторов с разным набором параметров

​Компилятор по типу и числу аргументов выбирает тот или иной конструктор при формировании нового объекта
Конструкторы становятся перегруженными

14

Multiple Choice

Что означает перегрузка конструкторов?

1

Один конструктор возвращает значение

2

В одном классе несколько конструкторов с одинаковым именем, но различными параметрами

3

Конструкторы могут иметь разные имена

4

Конструкторы не могут иметь параметров

15

КОНСТРУКТОР ПРЕОБРАЗОВАНИЯ

media
media
media
media

Создание объектов класса

​Конструктор позволил преобразовывать вещественные числа в объект класса Complex
Такие конструкторы (с одним параметром) получили название конструкторов преобразования

16

Multiple Choice

Какой синтаксис используется для создания объекта с использованием конструктора преобразования?

1

Complex c1 = 5;

2

Complex c1(5);

3

Complex c1{5};

4

Все вышеперечисленные

17

КОНСТРУКТОР ПРЕОБРАЗОВАНИЯ

media
media
media

​Метод прибавления к текущему комплексному числу другого комплексного числа

​Компилятор создает временный объект типа Complex, инициализируя его вещественным значением, и выполняет сложение

18

ЗАПРЕТ ПРЕОБРАЗОВАНИЯ

media
media
media
media
media

​Если неявное преобразование типов следует запретить, то перед конструктором преобразования достаточно прописать ключевое слово explicit

19

Multiple Choice

Что происходит, если конструктор преобразования аннотирован ключевым словом explicit?

1

Конструктор будет вызываться неявно

2

Неявное преобразование типов запрещено

3

Конструктор будет доступен только для статических объектов

4

Конструктор можно вызвать только один раз

20

Деструктор – метод класса, предназначенный для освобождения памяти, занимаемой объектом
Деструктор выполняет противоположные конструктору действия и вызывается автоматически при уничтожении объекта

Имя деструктора начинается с символа тильда (~), далее следует имя класса

ДЕСТРУКТОР

media

21

СВОЙСТВА ДЕСТРУКТОРА

media

- Деструктор не наследуется
-
Если деструктор не определён явным образом, компилятор автоматически создают пустой деструктор
-
Нельзя объявить указатель на деструктор
-
Деструктор описывают явным образом, при необходимости выполнить какие-то дополнительные действия перед освобождением памяти, занимаемой объектом

22

ЗАЧЕМ НУЖЕН ДЕСТРУКТОР?

media
media
media

В конструкторах происходит выделение памяти под массив, но нигде нет ее освобождения
При создании объектов этого класса возможна утечка памяти

23

Multiple Choice

Каковы параметры деструктора?

1

Может иметь любые параметры

2

Не имеет параметров

3

Всегда принимает один параметр

4

Может возвращать значение

24

ПРИСВАИВАНИЕ ОБЪЕКТОВ

media
media
media

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

При уничтожении объектов, выделенная память освобождается дважды, что приводит к аварийному завершению программы

25

Multiple Choice

Какой проблемой может завершиться побайтовое копирование двух объектов класса PointND при их уничтожении?

1

Проблема с производительностью

2

Утечка памяти

3

Двойное освобождение памяти

4

Проблем не будет

26

КОНСТРУКТОР КОПИРОВАНИЯ

media

Параметр - константная ссылка на объект текущего класса

media

​Необходимо при копировании объектов дополнительно выделять память для координат нового объекта
Для этого предназначен конструктор копирования

​По этому типу параметра компилятор «понимает», что это конструктор копирования и использует его при создании нового объекта на основе другого того же типа

27

Multiple Choice

Какой тип параметра обычно указывается в конструкторе копирования?

1

Ссылка на объект текущего класса

2

Указатель на объект текущего класса

3

Значение объекта текущего класса

4

Константное значение типа int

28

ПЕРЕОПРЕДЕЛЕНИЕ ПРИСВАИВАНИЯ

media
media

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

media

29

ДЕЛЕГИРОВАНИЕ КОНСТРУКТОРОВ

media

Подход, когда один конструктор вызывает другой конструктор этого же класса, получил название делегирование конструкторов, а сами конструкторы, которые вызывают другие, – делегирующими

В списке инициализации допускается вызов конструкторов текущего класса

30

Multiple Choice

Каковы преимущества делегирования конструкторов?

1

Сокращение времени компиляции

2

Упрощение кода и избежание дублирования

3

Увеличение производительности

4

Обеспечение совместимости с другими классами

31

Poll

Как вы оцениваете уровень сложности изученного материала?

Очень простой

Умеренно сложный

Сложный

Чрезвычайно сложный

ЛЕКЦИЯ 2.
КОНСТРУКТОРЫ И ДЕСТРУКТОРЫ

Show answer

Auto Play

Slide 1 / 31

SLIDE