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