С++ Частный конструктор по умолчанию с пустым телом

Я видел некоторый код здесь.

Существует класс с закрытым конструктором по умолчанию с пустым телом и параметризованным конструктором. В комментариях к коду говорится, что конструктор по умолчанию стал закрытым, "чтобы не было возможности создавать объекты без указанных свойств" [свойства представлены членами данных класса]. Таким образом, нет смысла явно определять частный конструктор по умолчанию, потому что его нельзя использовать!

Как только мы объявили параметризованный конструктор, конструктор по умолчанию не будет неявно предоставлен компилятором! Таким образом, не будет возможности создавать объекты без аргументов, передаваемых несуществующему конструктору.

Мой вопрос: зачем вообще нужно объявлять конструктор по умолчанию в этом случае?

2 ответа

Решение

Вы совершенно правы. Как только появится пользовательский конструктор, конструктор по умолчанию не будет создан.

Так что вам не нужно объявлять конструктор по умолчанию в этом случае.

Также см. § 12.1 / 5

Конструктор по умолчанию для класса X конструктор класса X это можно назвать без аргумента. Если нет объявленного пользователем конструктора для класса Xконструктор, не имеющий параметров, неявно объявляется как дефолтный (8.4). [...]

Да, автор этого неверен о том, как работают конструкторы по умолчанию. Возможно, он перепутал его с конструктором копирования, который создается автоматически даже в его случае.

Другие вопросы по тегам