Это хорошая практика, чтобы написать конструктор / деструктор? - PullRequest
0 голосов
/ 27 августа 2018

Интересно, будет ли хорошей идеей всегда писать конструктор / деструктор, даже если я их не использую.

class Foo
{
public:
    Foo(){};
    ~Foo(){};
};

Или лучше писать их только тогда, когда я их использую?

class Foo
{
public:
};

1 Ответ

0 голосов
/ 27 августа 2018

Это плохая идея - определять пользовательские специальные функции-члены, когда их достаточно по умолчанию.

  • Вы потеряете сгенерированные по умолчанию операции перемещения, см. Имеет ли значение по умолчаниювиртуальный деструктор предотвращает сгенерированные компилятором операции перемещения?

  • Ваш класс больше не будет тривиальным, в результате чего распределение и освобождение, а контейнеры, удерживающие ваш класс, станут намного менее эффективными.

  • Определения по умолчанию могут быть автоматически noexcept, но вы потеряли это.

  • Ваш класс больше не является агрегатом, поэтому вы не можете использоватьагрегатная инициализация.

  • Если вы сделаете деструктор виртуальным, как показано в вашем вопросе, вы также потеряете стандартную компоновку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...