У классов в C++03 есть специальные члены-функции: пользовательские конструкторы (custom constructors), конструктор по умолчанию (default constructor), деструктор (destructor), конструктор копирующего присваивания (copy constructor), оператор копирующего присваивания (copy assignment operator). C++11 добавляет перемещающий конструктор (move constructor) и оператор перемещающего присваивания (move assignment operator) и спецификаторы = default и = delete.
Правила, по которым компилятор неявно объявляет и удаляет такие функции, очень сложные. Есть разные версии таблиц с подсказками. Но они показывают только особенности каждой специальной функции в отдельности.
// User declares:
// Compiler implicitly declares: