'= 0' означает, что это чисто виртуальный метод . Он должен быть переопределен в наследующем классе.
Если у класса есть чисто виртуальный метод, он считается абстрактным . Экземпляры (объекты) абстрактных классов не могут быть созданы. Они предназначены для использования только в качестве базовых классов.
Любопытная деталь: «= 0» не означает, что метод не имеет определения (нет тела). Вы все еще можете предоставить тело метода, например ::10000
class A
{
public:
virtual void f() = 0;
virtual ~A() {}
};
void A::f()
{
std::cout << "This is A::f.\n";
}
class B : public A
{
public:
void f();
}
void B::f()
{
A::f();
std::cout << "And this is B::f.\n";
}