Vererbung, Virtual...Anfängerproblem mit Aufgabe
-
Hallo mich würde interessieren was bei den Kommentaren /*1*/ /*2*/ /*3*/ und /*4*/ ausgegeben wird.
Ich hätte gesagt
/*1*/ A:fn
/*2*/ B:fn
/*3*/ A:fv
/*4*/ B:fvDie Lösung sagt jedoch was anderes! Was meint Ihr?
Vielleicht könnt Ihr eure Antwort auch begründen...würde mir sicher helfen
class B { public: virtual char* fv(){ return "B:fv"; }; char* fn(){ return "B:fn"; }; int pubB; protected: int protB; private: int privB; }; class A : public B { public: virtual char* fv(){ return "A:fv"; }; char* fn(){ return "A:fn"; }; int pubA; void testA(){ /* 5 */ }; protected: int protA; private: int privA; }; class C : private B { public: int pubC; void testB(){ /* 6 */ }; protected: int protC; private: int privC; }; int main() { // a) A a; A *pA=&a; B *pB=&a; cout<<pA->fn(); /* 1 */ cout<<pB->fn(); /* 2 */ cout<<pA->fv(); /* 3 */ cout<<pB->fv(); /* 4 */ // b) B b; C c; /* 7 */ }Viele Grüße Joggi
-
Hi,
da fn nicht virtuel ist, folgt es dem Typ des Zeigers. Also ist
/*1*/ A:fn
/*2*/ B:fnrichtig.
da fv virtuel ist, folgt es den Typ des Objekts. Also ist
/*3*/ A:fv
/*4*/ B:fvfalsch, den der Typ des Objektes ist A folglich müsstest Du zweimal A:fv erhalten.
mfg Martin
-
Danke, ich glaub ich habs kapiert

noch eine Frage:
wenn bei /*7*/ der zugriffc.pubBstattfinden würde, wäre dieser zulässig?Wenn nein warum nicht?
mfg Joggi
-
Joggii schrieb:
wenn bei /*7*/ der zugriff
c.pubBstattfinden würde, wäre dieser zulässig?Wenn nein warum nicht?
Wie wäre es, wenn du deine Hausaufgaben selber löst?
-
Ach da schreibt wohl auch jemand morgen IN 2 Prüfung

zu letzterem hätte ich auch bitte noch eine Antwort:
Sind diese Zugriffe unter 7 erlaubt?
http://upload.wuehrl.net/thumb-i50bxi1as.png
Antworten habe ich, weiß aber nicht wieso es so ist.
Schon mal danke.
-
ja nein nein
ja nein nein
ja nein nein
ja nein nein
nein nein nein
-
Bist du dir sicher das bei /*7*/ c.pubB=1 kein zulässiger Zugriff ist? warum?
-
Weil B eine private Basisklasse von C ist.
-
Oh, hatte ich übersehen...naja kommt meines Wissens nach auch nur selten vor das etwas privat geerbt wird...!!!
-
Danke für die Antworten.