Я хочу, чтобы пользователь моего класса не использовал его как автоматическую переменную, поэтому я пишу код следующим образом:
class A {
private:
~A() = default;
};
int main() {
A a;
}
Я ожидаю, что код не будет скомпилирован, но g++ компилирует его без ошибок.
Однако, когда я меняю код на:
class A {
private:
~A(){}
};
int main() {
A a;
}
Теперь g++ дает ошибку, что ~A()
является приватным, как и мое ожидание.
Какая разница между деструктором "= default" и пустым деструктором?