Конструктор копирования, деструктор и оператор присваивания. Когда они нам не нужны все?

Я знаю эмпирическое правило C ++, когда вы добавляете cctor, dtor или op = в свой класс, вам нужно добавить еще два, чтобы ваш класс работал правильно под всеми обстоятельства.

Есть ли случай, когда вам не нужно предоставлять все три, а только один или два из них?

Почему C ++ не требует, чтобы вы добавляли их все, если вы добавляете один из них в свой класс ?

EDIT1:

Вы упомянули примеры, когда вам не только не нужны некоторые из них, но вы не хотите их иметь, поэтому вы хотите сделать их частными или защищенными. Но вам все равно нужно записывать их в свой код даже с пустыми телами.

Единственная веская причина для меня не иметь их всех, когда вы делаете класс полиморфным, добавляя виртуальный деструктор с пустым телом. Но как только вы напишете что-то в теле деструктора, вам следует подумать о том, чтобы написать что-то в теле cctor и op = тоже.

Я ищу примеры, когда вы не Вам нужно написать все 3 метода, и вы можете опустить некоторые из них, не вызывая ошибок в вашем классе, даже если новичок использует ваш класс. :)

5
задан Calmarius 31 March 2011 в 15:24
поделиться