El problema con el constructor de copias y el operador de asignación de copias es que el compilador genera implementaciones automáticamente si no se declaran explícitamente.
Esto puede causar fácilmente problemas involuntarios. Si una clase tiene un destructor no trivial, casi siempre necesita proporcionar sus propias implementaciones para el constructor de copias y el operador de asignación de copias también (este es el Law of the Big Three) ya que los generados por el compilador por defecto usualmente harán lo incorrecto.
Violar la ley del Big Three a menudo conduce a errores tales como el doble libre de miembros de datos y la corrupción de la memoria. No es raro que surjan este tipo de errores porque el autor de la clase nunca se molestó en pensar en el comportamiento de copiado y porque es fácil para los consumidores copiar objetos involuntariamente.
A menos que el autor de la clase realmente haya pensado en cómo copiar correctamente las instancias de esa clase (o a menos que la clase tenga un destructor trivial), es mejor rechazar explícitamente la copia para evitar posibles problemas. La implementación de la capacidad de copiado podría diferirse hasta que exista una necesidad real.
Se les llama "copia constructor" y "operador de asignación". No existe tal cosa como un constructor de asignaciones. – Sjoerd
Los llamaría "constructor" y "operador de asignación" o "constructor de copia" y "operador de asignación de copia" –
No llamaría al MALVADO, ese tipo de colores los daría una mala imagen. Simplemente deshabilítelos como boost does: boost :: noncopyable –