В C ++ это означает, что метод является чисто виртуальным методом.
Это означает, что экземпляр этого конкретного типа класса не может быть создан. Вы можете создавать только экземпляры классов, производных от этого, которые переопределяют все чистые виртуальные методы в базовом классе.
Базовый класс с чисто виртуальными методами определяет интерфейс, который производные классы имеют для реализации и не предназначен для использования самостоятельно.
Вопреки утверждениям спокойствия, насколько я знаю, чисто виртуальные функции могут быть реализованы и их можно вызывать явно.
#include <cstdio>
class A
{
public:
virtual void foo() const = 0; //pure virtual
};
void A::foo() const { puts("A::foo"); }
class B: public A
{
public:
virtual void foo() const { puts("B::foo"); }
};
int main()
{
//A a; //this would be an error - main point of having pure virtual functions
B b;
b.foo();
b.A::foo();
}
Обычно этого делать не следует, за исключением случаев, когда виртуальный деструктор является чистым в базовом классе (в этом случае он должен быть определен).