funcția virtuală prototip = 0;
O funcție virtuală pură este folosită pentru a "amâna" decizia de a implementa o funcție. În terminologia OOP, aceasta se numește o metodă întârziată.
Vom explica acest concept prin dezvoltarea unei forme primitive de modelare ecologică. În exemplul nostru, vom avea diferite forme de interacțiune a vieții folosind abstracția de bază abstractă. Creați fox (vulpe) ca un prădător tipic și iepure (iepure) ca pradă. Iepurele are iarbă.
const int N = 40, STATE = 4; // dimensiunea unei suprafețe pătrate
tippedef living * lume [N] [N]; // lumea va fi un model
clasa de viață / что живет в мире
int rând, coloană; // locație
sumele void (lume, int sm []); // sm [#states] este folosit în continuare
(int r, int c): rândul (r), coloana (c) <>
starea virtuală care () = 0; // identificarea statului
viata virtuala * urmatoarea (lume w) = 0; // calculul următor
void living :: sume (lume w, int sm [])
pentru (int i = -1; i <= 1; i++)
pentru (int j = -1; j <= 1; j++) sm[w[row+i][column+j]->care ()] ++;
// clasa actuală - numai pradă
vulpea de clasă: viața publică
int age; // folosit pentru a decide cu privire la moarte
fox (int r, int c, int a = 0): viu (r, c), vârstă (a) <>
stat cine ()
viata * urmatoarea (lumea w); // Metoda amânată pentru FOX
// clasa actuală - numai victime
clasa de iepure: viața publică
int age; // folosit pentru a decide cu privire la moarte
iepure (int r, int c, int a = 0): viu (r, c), vârstă (a) <>
stat cine ()
viata * urmatoarea (lumea w); // metodă amânată pentru RABBIT
// plante actuale numai pentru clasă
iarba de clasă: viața publică
iarba (int r, int c): viață (r, c) <>
stat cine ()
viata * urmatoarea (lumea w); // metoda amânată pentru GRASS
clasa goală: viața publică
goală (int r, int c): viață (r, c) <>
stat cine ()
viata * urmatoarea (lumea w); // metoda amânată pentru EMPTY
Rețineți că proiectul permite dezvoltarea altor forme de pradă, pradă și viața plantelor, utilizând următorul nivel de moștenire. Caracteristicile de comportament ale fiecărei forme de viață sunt fixate în versiunea următoare ().
Living * iarbă :: următoarea (lume w)
dacă (sumă [GRASS]> suma [RABBIT] / / există iarbă
întoarcere (iarba nouă (rând, coloană));
retur (nou gol (rând, coloană));
Iarba poate fi mâncată de iepure. Dacă există mai multă iarbă în cartier decât iepure, iarba rămâne, altfel - iarba va fi mâncată.