В С++ законно давать реализацию чистой виртуальной функции:
class C
{
public:
virtual int f() = 0;
};
int C::f()
{
return 0;
}
Зачем вам это делать?
Связанный вопрос: С++ faq lite содержит пример:
class Funct {
public:
virtual int doit(int x) = 0;
virtual ~Funct() = 0;
};
inline Funct::~Funct() { } // defined even though it pure virtual; it faster this way; trust me
Я не понимаю, почему деструктор объявлен чистым виртуальным, а затем реализован; и я не понимаю комментария, почему это должно быть быстрее.