Преимущество определения обычных виртуальных функций в базовом классе состоит в том, что тогда нам не нужно переопределять их в производных классах.
Даже если мы определяем виртуальные функции чистые в базовом классе, нам все равно придется определять их и в производных классах.
#include <iostream>
using namespace std;
class speciesFamily
{
public:
virtual void numberOfLegs () = 0;
};
void speciesFamily :: numberOfLegs ()
{
cout << "\nFour";
}
class catFamily : public speciesFamily
{
public:
void numberOfLegs ()
{
speciesFamily :: numberOfLegs ();
}
};
Это может показаться странным, но есть ли ситуации, когда полезно определять чистую виртуальную функцию в базовом классе?