В соответствии с "Правилом пятерки", когда я объявляю одну из: операцию копирования или перемещения или деструктора, я должен написать их все, потому что компилятор не создает их (некоторые из них) для меня. Но если мой класс (A
) происходит от абстрактного класса с виртуальным деструктором, означает ли это, что деструктор в классе A
будет считаться "определяемым пользователем"? Как следствие, перемещение семантики не будет работать с объектами этого класса A
, потому что компилятор не будет генерировать для меня конструктор перемещения?
struct Interface {
virtual void myFunction() = 0;
virtual ~Interface() {};
};
struct A : public Interface {
void myFunction() override {};
};