Это контракт, используемый между разработчиками, чтобы сказать: «Это тот тип функциональности, который мы хотим реализовать», и оставляет реализацию разработчикам, если классы, которые они хотят спроектировать, - наследовать базовый класс.
Простой пример:
#include <iostream>
using namespace std;
class Animal
{
public:
Animal() {}
virtual void sound() = 0;
};
/* Dog class is derived from base class Animal */
class Dog : public Animal
{
public:
Dog() {}
void sound()
{
cout << "woof!" << endl;
}
};
Здесь Dog
является Animal
, и должен реализовывать свой собственный звук. Функция sound() базового класса Animal
подразумевает, что животные создают звуки и что любой класс, который наследует от Animal
, должен реализовывать звуковую функцию. Из этого вы можете сделать класс Cat
, который выводит мяу из его звукового класса, а также класс Bear
, который выводит рев и т. Д.
Я не могу видеть, что это такое плохо с этим вопросом, что он должен заслужить так много downvotes? Это базовая, но не слишком широкая или неясная вообще. –