Итак всего есть 3 типа конструкторов: которые надо знать.
Если мы их не прописываем явно, они создаются по умолчанию:
обычный конструктор
конструктор копирования
конструктор присваивания
Ниже представлен довольно сложноватый для понимания вариант сочетания конструкторов и деструкторов, но тем не менее:
Метод | Неявно определен: | Определение по умолчанию: |
---|---|---|
Конструктор по умолчанию | если нет конструкторов | ничего не делает |
Деструктор | если нет деструктора | ничего не делает |
Конструктор копирования | если нет конструктора перемещения и присваивания перемещением | копирует все члены |
Присваивание копированием | если нет конструктора перемещения и присваивания перемещением | копирует все члены |
Конструктор перемещения | если нет деструктора, конструктора копирования и нет присваивания ни копированием ни перемещением | перемещает все члены |
Присваивание перемещением | если нет деструктора, конструктора копирования и нет присваивания ни копированием ни перемещением | перемещает все члены |
Есть довольно понятные правила явного применения конструкторов и деструкторов: правило 3 , правило 5