In C++ ist es legal, eine Implementierung einer rein virtuellen Funktion zu geben:Unter welchen Umständen ist es vorteilhaft, eine Implementierung einer reinen virtuellen Funktion zu geben?
class C
{
public:
virtual int f() = 0;
};
int C::f()
{
return 0;
}
Warum würden Sie überhaupt wollen, dies zu tun?
Verwandte Frage: Die C++ faq lite enthält ein Beispiel:
class Funct {
public:
virtual int doit(int x) = 0;
virtual ~Funct() = 0;
};
inline Funct::~Funct() { } // defined even though it's pure virtual; it's faster this way; trust me
Ich verstehe nicht, warum die destructor rein virtuelle deklariert und dann umgesetzt werden; und ich verstehe den Kommentar nicht, warum das schneller sein sollte.