Определение конструктора не по умолчанию автоматически не означает, что вам нужен деструктор и т. Д. - вы можете просто использовать этот конструктор для удобства заполнения типа POD.
Тем не менее, то же самое относится и к конструкторам по умолчанию.
По сути, "вам нужна большая тройка?" срабатывает, когда класс будет управлять ресурсом. Вам все еще может не понадобиться конструктор по умолчанию, но вам do нужен конструктор для установки действительного начального состояния.
Это вновь созданное состояние может еще не владеть экземпляром ресурса, но если это не так, то оно должно знать, что оно не имеет (например, имеет нулевой указатель).
Однако большая тройка также используется неявно во многих случаях. Например, временные диаграммы создаются по умолчанию. Одна из причин, по которой вам нужен конструктор не по умолчанию, - это просто блокирование неявного конструктора по умолчанию от предоставления и использования.
Таким образом, одна из причин для определения всех трех сразу - это убедиться, что ваш код (включая неявно предоставленный компилятором) остается в здравом уме.
Почти всегда, если вы управляете ресурсом, у вас будет конструктор по умолчанию, поэтому в правиле упоминается, что - но до тех пор, пока вы определяете какой-то конструктор, у вас должно быть все в порядке.