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

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

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

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

Сложный

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

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

Show answer

Auto Play

Slide 1 / 31

SLIDE