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.htm

    void 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


Anmelden zum Antworten