Cuando escribo clases interfaz en C++, que elige cualquiera de las siguientes 2 opcionesqué hacer con las destructores en una interfaz
class Interface
{
public:
virtual R1 f1(p11, p12 , ...) = 0;
...
virtual Rn fn(pn1, pn2 , ...) = 0;
virtual ~Interface() {}
}
o
class Interface
{
public:
virtual R1 f1(p11, p12 , ...) = 0;
...
virtual Rn fn(pn1, pn2 , ...) = 0;
virtual ~Interface() = 0;
}
Interface::~Interface() {}
La primera versión es más corta de escribir
El segundo es atractivo en que todas las funciones de la interfaz son puramente virtuales
¿Hay alguna razón por la que preferiría uno u otro método (o tal vez un tercero)?
Gracias
Mal. El segundo caso no fuerza al destructor a ser anulado: http://ideone.com/aw3kV. Además, esta frase * "para que la clase base se vea obligada a implementar un destructor" * no tiene sentido para mí. ¿Puedes reformularlo? – Nawaz
@Nawaz - Lo siento, mal tipeo. Quise decir "derivado", no "base". Ahora está arreglado. Debe dejar de escribir el código a las 5:00 a.m. –