Metodę czysto wirtualną w języku C++ deklaruje się tak:

class Figura { public: virtual float pole() = 0;

Taka deklaracja metody wirtualnej zmusza jednocześnie do określenia metody float pole() na jednym z poziomów dziedziczenia. Nie jest możliwe pominięcie takiej implementacji. Jednocześnie taka deklaracja uniemożliwia stworzenie jakiegokolwiek obiektu klasy Figura np.: Figura mojObiekt;.

Przykład w C++ #include <iostream>

const float pi = 3.14159; class Figura { public: virtual float pole() const { return -1.0;

class Kwadrat : public Figura { public: Kwadrat( const float bok ) : a( bok ) {}

float pole() const { return a * a;

private: float a; // bok kwadratu

class Kolo : public Figura { public: Kolo( const float promien ) : r( promien ) {}

float pole() const { return pi * r * r;

private: float r; // promien kola

void wyswietlPole( Figura& figura ) { std::cout << figura.pole() << std::endl; return;

int main() { // deklaracje obiektow: Figura jakasFigura; Kwadrat jakisKwadrat( 5 ); Kolo jakiesKolo( 3 ); Figura* wskJakasFigura = 0; // deklaracja wskaźnika