а) Стандарт говорит где-нибудь, что
если пользователь объявил конструктор
присутствует в классе, по умолчанию
Конструктор (неявный) подавляется.
Это в основном сказанное выше
отрицательно или это еще раз подразумевается
:)
Да, это значение
b) Why is it that way?
Скорее всего, если у вас есть определяемый пользователем конструктор, это означает, что для инициализации объекта требуется специальная работа. В таком случае имеет смысл отключить неявно сгенерированный конструктор по умолчанию, поскольку он, скорее всего, не будет выполнять какую-либо специальную работу.
c) Why the same rules do not apply for the default destructor?
Что ж, возможно, для языка имеет смысл применять «правило трех» (если вы определяете один из конструктора копирования, оператора присваивания или деструктора, скорее всего, вам нужно реализовать все три), но это просто т.
Возможно, обоснование заключается в том, что существует несколько способов инициализации класса, но назначение и уничтожение часто работают одинаково (присваивание по элементам, запуск деструктора всех членов).