Set\Get funktionen ?



  • Also ich lerne im moment C++ mit dem Buch C++ in 21 Tagen.

    Und dort ist ein Code den ich nicht ganz verstehe, ich poste mal den ganzen code:

    class Car
    {
    public: // die nächsten fünf sind public
    void Start();
    void Accelerate();
    void Brake();
    void SetYear(int year);
    int GetYear();
    private: // der Rest ist private
    int Year;
    Char Model [255];
    }; // Ende der Klassendeklaration
    Car OldFaithful; // eine Instanz von car
    int bought; // eine lokale Integer-Variable
    OldFaithful.SetYear(84) ; // weist year 84 zu
    bought = OldFaithful.GetYear(); // setzt bought auf 84
    OldFaithful.Start(); // ruft die start-Methode auf
    

    Naja ist zwar ein anständiger code, aber ich versteh hier etwas nicht. Und zwar ist es die Zeile :

    bought = OldFaithful.GetYear(); // setzt bought auf 84
    

    ich versteh nicht wieso hier bought plötzlich 84 ist. Ich verstehe schon das 'year' 84 ist, da ja mit der funktion

    OldFaithful.SetYear(84) ; // weist year 84 zu
    

    der variable Year der Wert 84 zugewiesen wird. Aber nirgendwo steht, das bought auch 84 sein soll, da ja GetYear nichts tut. Deshalb wollt ich fragen ob es sein kann, das die nicht einfach so "GetYear" und "SetYear" heißen, sondern das "Get" und "Set" auch funktionen sind, die wirklich "Bekommen" und "Setzen" .

    Ich hoffe mich hat hier irgendeiner verstanden ^^

    Kurz und knapp : Sind "get" und "set" von "GetYear" und "SetYear" voreingestellte funktionen von C++ oder sind das nur ganz normale Namen

    Und wenn nicht, könnt ihr mir dann erklären wie der wert 84 in bought reingeraten ist ^^

    Danke für jegliche hilfe

    mfg

    Eddy14



  • Eddy14 schrieb:

    ich versteh nicht wieso hier bought plötzlich 84 ist. Ich verstehe schon das 'year' 84 ist, da ja mit der funktion

    OldFaithful.SetYear(84) ; // weist year 84 zu
    

    der variable Year der Wert 84 zugewiesen wird. Aber nirgendwo steht, das bought auch 84 sein soll, da ja GetYear nichts tut.

    GetYear gibt auch nur den Wert von Year zurück, die Zuweisung wird durch den = Operator ausgeführt. Im Grunde ist

    bought = OldFaithful.GetYear();
    

    nichts anderes als z.B.

    zahl = 42;
    

    Kurz und knapp : Sind "get" und "set" von "GetYear" und "SetYear" voreingestellte funktionen von C++ oder sind das nur ganz normale Namen

    Das sind ganz normale Namen. Es gibt ein paar "voreingestellte" Namen in C++, das sind einmal Konstruktoren und Destruktoren, die ihren Namen von der Klasse bekommen (Car und ~Car), und andererseits überladene Operatoren wie operator+ oder operator new.



  • Aber nirgendwo steht, das bought auch 84 sein soll, da ja GetYear nichts tut.

    GetYear tut schon etwas, nur steht das, was es tut, an der Stelle Deines Codeausschnittes nicht geschrieben. (Aber wenn Du danach gehst, dann tut ja keine Funktion Deiner Klasse etwas.) Irgendwo anders würde im richtigen Programm jedoch folgendes stehen:

    int Car::GetYear ()
    {
        return Year;
    }
    

    Und damit liefert die Funktion den Wert Year Deines Objektes zurück, weshalb die Gleichung bought = OldFaithful.GetYear(); durchaus korrekt ist.



  • Ahh danke euch beiden.

    Hey NES-Spieler , genau das habe ich auch gedacht, aber da ich leider diese code zeile nicht finden konnte habe ich gedacht und gedacht , und dachte dann am ende ( ^^ ) das es vielleicht wirklich an den namen von "Get" und "Set" liegt. Leider ist diese Code Zeile nicht angegeben, der autor hatte wohl kein bock weiter zu shcreiben und hat dann wohl an dieser stelle abgebrochen.

    Danke Leute ihr habt mir echt geholfen. Ich lerne dann mal weiter 🙂

    PS: Super Forum, vor allen dingen die schnellen antworten die man hier bekommt ^^




Anmelden zum Antworten