compiler - c++14
Destructor virtual puro predeterminado (1)
Para definir un método virtual puro, necesita una definición separada de la declaración.
Por lo tanto:
struct X {
virtual ~X() = 0;
};
X::~X() = default;
En C ++ 11, podemos declarar que un destructor se genera automáticamente:
struct X {
virtual ~X() = default;
};
Además, podemos declarar que un destructor es puro virtual:
struct X {
virtual ~X() = 0;
};
Mi pregunta es: ¿cómo declarar que el destructor es autogenerado y puro virtual? Parece que la siguiente sintaxis no es correcta:
struct X {
virtual ~X() = 0 = default;
};
Tampoco es este:
struct X {
virtual ~X() = 0, default;
};
Ni este:
struct X {
virtual ~X() = 0 default;
};
EDIT: alguna aclaración sobre el propósito de la pregunta. Básicamente, quiero que una clase vacía sea una clase base no instanciable, pero la clase derivada es instanciable, entonces la clase debe tener un destructor virtual puro. Pero, por otro lado, no deseo proporcionar la definición en un archivo .cpp. Entonces necesito algún tipo de mecanismo equivalente al default
. Me pregunto si alguien tiene una idea para resolver el problema.