// esim4.cpp #include #include using namespace std; // abstrakti rajapintaluokka class Shape { public: virtual void piirra() = 0; // puhdas virtuaalifunktio Shape() {} // Oletusmuodostin virtual ~Shape() {} // virtuaalinen hajotin }; class Square : public Shape { public: void piirra() { cout << "Piirtelee neliötä..." << endl; } Square() { cout << "Neliö-muodostin" << endl; } ~Square() { cout << "Neliö-hajotin" << endl; } }; class Circle : public Shape { public: void piirra() { cout << "Piirtelee ympyrää..." << endl; } Circle() { cout << "Ympyrä-muodostin" << endl; } ~Circle() { cout << "Ympyrä-hajotin" << endl; } }; int main (void) { Shape *ps1 = new Square(); Shape *ps2 = new Circle(); if (ps1) { ps1->piirra(); delete ps1; ps1 = NULL; } if (ps2) { ps2->piirra(); delete ps2; ps2 = NULL; } return(0); }