Преимущество определения комм. на виртуальных функциях в базовом классе заключается в том, что тогда нам не нужно переопределять их в производных классах.
Даже если мы определим чистые виртуальные функции в самом базовом классе, нам все равно придется определять их в производных классах.
#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 ();
}
};
Это наверняка может показаться причудливым, но есть ли ситуации, когда полезно определять чистую виртуальную функцию в самом базовом классе?