http://en.cppreference.com/w/cpp/language/initializer_list
El constructor copia es equivalente a:
http://en.wikipedia.org/wiki/Copy_constructor
Si, pero ese constructor copia implicito como explica en el enlace de arriba tendria el problema del shallow copy, por eso esta implementado.
Por ejemplo, esto explotaria al llegar al destructor de Handle con el objeto x donde intentaria liberar smile (que apuntaria a la memoria ya liberada al llamar al operador delete con el objeto p).
De nadas
El constructor copia es equivalente a:
Código (c++) [Seleccionar]
Handle::Handle(const Handle& other)
{
smile = new CheshireCat(*other.smile);
// do nothing
}
http://en.wikipedia.org/wiki/Copy_constructor
Si, pero ese constructor copia implicito como explica en el enlace de arriba tendria el problema del shallow copy, por eso esta implementado.
Por ejemplo, esto explotaria al llegar al destructor de Handle con el objeto x donde intentaria liberar smile (que apuntaria a la memoria ya liberada al llamar al operador delete con el objeto p).
Código (c++) [Seleccionar]
Handle *p = new Handle;
Handle x = *p;
delete p;
De nadas