Methode einer Abgeleiteten Klasse Aufrufen - Konstruktor mit Char (einfache Frage)
-
Guten Abend,
Mich würde gerne interesieren wie ich bei einer Abgeleiteten Klasse die Methode der Basisklasse aufrufen kann.
Hier ein Beispiel:
class Person { int Name; int Alter; public: Person(int N,int A) :Name(N),Alter(A){}; void Print(void) { printf("\n Name: %s Alter: %i ",Name,Alter); } }; class Student :public Person { int Marikelnummer; public: Student(int N,int A,int Ma) :Person(N,A){Marikelnummer = Ma;} void Print(void) { super.Print(); printf("Matrikelnummer: %i ",Marikelnummer); } }; int main(void) { Student S1(1,23,7381832); S1.Print(); return 0; }Hier würde ich gerne bei einem Studenten der Die Methode Print aufruft auch das Alter und den Name der Person sehen so wie bei java der Aufruf super.Print();
meine Zweite Frage: Warum funktioniert der Kopierkonstruktor im obigen Beispiel nicht mit char sondern nur mit int ?
Danke
Fisch
-
der scope operator ist die lösung un dein virtual in der basisklasse wäre auch net schlecht
http://tutorial.schornboeck.net/virtual.htmvoid Print(void) { Person::Print(); printf("Matrikelnummer: %i ",Marikelnummer); }fisch1983 schrieb:
meine Zweite Frage: Warum funktioniert der Kopierkonstruktor im obigen Beispiel nicht mit char sondern nur mit int ?
warum sollte er nicht funktionieren? benutzte aber lieber std::string
Person(const std::string &N,int A) : Name(N), Alter(A) { }btw schreib doch alles in die init liste, siehe http://tutorial.schornboeck.net/initliste.htm
Student(int N,int A,int Ma) : Person(N,A), Marikelnummer(Ma) { }btw benutzt std::cout statt printf
-
mach aus
super.Print();das hier:
Person::Print();Und schon klappts

BR
-
danke !
-
Noch eine kleine Anmerkung. Methoden die überschrieben werden sollen/können solltest du als virtuell deklarieren.
Also, die Methode Print und der Destruktor.Edit: Oh, seh grad wurd schonmal erwähnt.
Ein Kopierkonstruktor is übrigens immer nur dieser der das Objekt (Referenz) selbst übergeben bekommt.
grüße