E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj programskih aplikacij > Objektno programiranje > Virtualni nadrazredi

Prijava

Virtualni nadrazredi

 

 

Ugotovili smo, da se v razredih pri večkratnem dedovanju podatki podvajajo. Včasih je to potrebno, v večini primerov pa se želimo nepotrebnemu podvajanju podatkov izogniti. V ta namen lahko definiramo virtualne nadrazrede (virtual base classes).

 

Kot virtualni nadrazred definiramo tisti razred, za katerega predvidevamo, da se bo uporabljal kot nadrazred za večkratno dedovanje. V našem primeru definiramo kot virtualni nadrazred, razred oseba. Zato zapišemo izpeljavo razredov student, asistent in profesor na naslednji način:

 

 

class student :: public virtual oseba

 

 

Takšno izpeljavo imenujemo tudi virtualna izpeljava. Poglejmo grafično predstavitev objekta razreda student_asistent pri navadni in virtualni izpeljavi:

 

 

Virtualna izpeljava

Slika 1: Virtualna izpeljava

 

Virtualna izpeljava

 

Spremeniti pa je potrebno tudi konstruktor razreda student_asistent:

 

student_asistent :: student_asistent (char i,  char n,  char s,  char v)

:
oseba(i, n), student (i, n, s), asistent ("---", "+++" , v) {}