Ispirato al post Why does destructor disable generation of implicit move methods?, mi chiedevo se lo stesso vale per il distruttore virtuale predefinito, ad es.Un distruttore virtuale predefinito impedisce le operazioni di spostamento generate dal compilatore?
class WidgetBase // Base class of all widgets
{
public:
virtual ~WidgetBase() = default;
// ...
};
Poiché la classe è destinato ad essere una classe base di una gerarchia widget di devo definire il suo distruttore virtuale per evitare perdite di memoria e comportamento indefinito quando si lavora con puntatori alla classe base. D'altra parte non voglio impedire al compilatore di generare automaticamente operazioni di spostamento.
Un distruttore virtuale predefinito impedisce le operazioni di spostamento generate dal compilatore?