сводная таблица

Итак всего есть 3 типа конструкторов: которые надо знать. Если мы их не прописываем явно, они создаются по умолчанию:

обычный конструктор по умолчанию
конструктор копирования по умолчанию
конструктор присваивания по умолчанию

Ниже представлен довольно сложноватый для понимания вариант сочетания конструкторов и деструкторов, но тем не менее:

Метод Неявно определен: Определение по умолчанию:
Конструктор по умолчанию если нет конструкторов ничего не делает
Деструктор если нет деструктора  ничего не делает
Конструктор копирования если нет конструктора перемещения и присваивания перемещением копирует все члены
Присваивание копированием если нет конструктора перемещения и присваивания перемещением копирует все члены
Конструктор перемещения если нет деструктора, конструктора копирования и нет присваивания ни копированием ни перемещением перемещает все члены
Присваивание перемещением если нет деструктора, конструктора копирования и нет присваивания ни копированием ни перемещением перемещает все члены


Есть довольно понятные правила явного применения конструкторов и деструкторов: правило 3 , правило 5