Ich habevirtuellen desctructor auf reine abstrakte Basisklasse
struct IMyInterface
{
virtual method1() = 0;
virtual method2() = 0;
};
GCC besteht darauf, dass ich
struct IMyInterface
{
virtual method1() = 0;
virtual method2() = 0;
virtual ~IMyInterface(){};
};
habe ich sehe nicht, warum. Eine reine Schnittstelle ist alles über die Schnittstelle (duh). Der Destruktor ist Teil der internen Implementierungsdetails eines konkreten Implementierers der Schnittstelle; Es ist nicht Teil der Schnittstelle. Ich verstehe die ganze Slicing-Frage (oder zumindest denke ich, dass ich es tue)
Also meine Frage ist - ist GCC richtig, darauf zu bestehen und wenn ja, warum?
Sie sprechen über Destruktoren, aber Ihr Code zeigt einen Konstruktor. Um was geht es? –
@mmyers, reparierte es. –
Regel 1 der Programmierung: Der Compiler ist immer richtig. Regel 2 der Programmierung: Wenn der Compiler falsch ist, gilt Regel 1. –