Imam jedno malo pitanjce sa jednog ispitnog roka koje bas i ne kuzim, pa ako nije problem da netko pomogne; ono sto ne kuzim oznacio sam kao komentar u kodu
Pitanje je :
Razmotrite slijedeći primjer!
#include <iostream>
using namespace std;
class Osoba //pravi klasu osoba
{
public:
void Ispis() //metoda pristupa(funkcija clanica ) klase osoba
{ cout << "Ispis iz Osoba" << endl; }
};
class Uposlenik: public Osoba /* izvedena klasa Uposlenik, osnovna klasa je Osoba tip nasljedjivanja/izvodjenja je public; koliko kuzim ovo znaci da ce svi clanovi osnovne klase biti dostupni objektima izvedene klase ????*/
{
public:
void Ispis()
{ cout << "Ispis iz Uposlenik" << endl; }
};
void tester1(Osoba &a) /* ovo ne kontam; molim ako moze netko da i objasni*/
{
a.Ispis();
}
void tester2(Osoba a) /* i ovo mi je zbunjoza ????? */
{
a.Ispis();
}
void main()
{
Osoba os;
tester1(os);
tester2(os);
cout << "----------" << endl;
Uposlenik up;
tester1(up);
tester2(up);
}
a) Šta će biti rezultat (ili greška) pokretanja prikazanog programa (dati i pojašnjenje)
b) Šta bi bio rezultat programa ukoliko se funkcija "Osoba::Ispis()" deklariše ovako:
virtual void Ispis()
Kad ovo kompajliram dobijem output :
Ispis iz Osoba
Ispis iz Osoba
----------
Ispis iz Osoba
Ispis iz Osoba
A kad stavim virtual ( slucaj b ) output je :
Ispis iz Osoba
Ispis iz Osoba
----------
Ispis iz Uposlenik
Ispis iz Osoba
Ako ima kakva dobra dusa koja moze i zeli "otvoriti oci" meni neukom co'jeku unaprijed hvala...