Esempio di classe base (Character) e classe derivata (Creature).
La classe base è astratta perchè contiene una funzione virtuale pura (Jump).
La funzione Jump deve quindi essere implementata nelle classi derivate.
Header file classe base Character
Character.h
#pragma once #include <string> using namespace std; class Character { public: Character(); virtual ~Character(); void walk(); virtual void jump() = 0; private: string name; int hp; int ap; };
Source file classe base Character
Character.cpp
#include <iostream> #include "Character.h" using namespace std; Character::Character() { name = "Character"; hp = 100; ap = 10; cout << "Costruttore classe base" << endl; } Character::~Character() { // virtuale } void Character::walk() { // classe base walk cout << "Classe base Character, funzione walk" << endl; } void Character::jump() { // virtuale pura }
Header file classe derivata Creature
Creature.h
#pragma once #include "Character.h" class Creature : public Character { public: Creature(); ~Creature(); void jump() override; };
Source file classe derivata Creature
Creature.cpp
#include <iostream> #include "Creature.h" using namespace std; Creature::Creature() { string name = "Creatura 1"; int hp = 200; int ap = 50; cout << "Costruttore classe derivata" << endl; } Creature::~Creature() { string name = "Creature dead"; int hp = 0; int ap = 0; } void Creature::jump() { // classe derivata jump cout << "Classe derivata Creature, funzione jump" << endl; }
TestClassi.cpp
#include <iostream> #include "Creature.h" using namespace std; int main() { Creature creature; creature.jump(); creature.walk(); system("pause"); return 0; }
Output del programma:
Costruttore classe base
Costruttore classe derivata
Classe derivata Creature, funzione Jump
Classe base Character, funzione Walk