const vor und hinter Funktionen



  • Morgen Leutz,
    ich hab ne Frage bezüglich const in Funktionen.

    Man sieht manchmal sowas hier:

    const double& GetRadius() const;
    

    Das const vor dem double verstehe ich nicht und das nachher auch nicht... 😞 😕



  • Es wird eine const-Referenz auf einen double zurückgegeben. Wahrscheinlich die einer member-Variable, von der nicht gewollt ist das man sie ändert.

    Das hintere const sagt, dass die Methode keinen Member der Klasse verändern darf.



  • Original erstellt von <Hmmm>:
    **Morgen Leutz,
    ich hab ne Frage bezüglich const in Funktionen.

    Man sieht manchmal sowas hier:

    const double& GetRadius() const;
    

    Das const vor dem double verstehe ich nicht und das nachher auch nicht... 😞 😕**

    das vorher:
    es wird ne referenz auf nen konstanten double zurückgegeben.
    dadurch geht nicht

    Circle c;
    ...
    c.GetRadius()=5;
    

    das nachher:
    es wird erlaubt, GetRadius auf ein konstantes Objekt aufzurufen.
    dadurch geht

    const Circle c;
    ...
    x=c.GetRadius();
    

    dieses const nachher kann man sich gut vorstellen, wenn man überlegt, wie man in c die GetRadius machen müßte. da gibts ja nicht das objekt beim aufruf vor dem punkt. man schriebe eher im aufruf GetRadius(&c) und als prototyp const double& GetRadius(Circle* this);. in c++ wird der this-parameter heimlich übergeben, wenn man c.GetRadius aufruft. dieser heimliche parameter ist leider unsichtbar, weshalb man da kein const dazuschreiben kann. double& GetRadius(const Circle* this) geht also nicht, weil this ja im prototyp gar nicht erwähnt wird. weil es aber notwendig ist, da ein const hinschreiben zu können, hat man sich gesagt: ein const hinter dem funktionskopf soll gelten als ein const am versteckten this-parameter.

    [ Dieser Beitrag wurde am 23.05.2003 um 11:49 Uhr von volkard editiert. ]



  • Das erste bedeutet "eine Referenz auf ein konstantes double". Das machst du um z.B. den Wert einer Membervariable zurückzugeben, verhinderst aber eine Modifikation...



  • Was ist das?

    const double const & GetRadius() const



  • Unnötig



  • sollte mal zu den FAQs (wenn es nicht sowieso schon dort ist)



  • was ist dann das ?

    const double& GetValue(const& double InValue) const;
    


  • das Gleiche, nur eben, dass Parameter übergeben werden.



  • welche parameter ?



  • Nunja, wenn ich eine Funktion aufrufe und ihr Variablen, oder Zeiger, oder Referenzen übergebe, das nennt man Parameter, dann sieht der Aufruf nicht mehr so aus:

    funktion();

    sondern so;

    funktion(int i, int z);

    Natürlich kann man noch andere Sachen übergeben.



  • das:
    funktion(int i, int z);
    ist aber kein funktionsaufruf sondern eine deklaration 😉

    btw @unwissender deine frage (welche parameter) war aber auch etwas wirr 🙂

    [ Dieser Beitrag wurde am 26.05.2003 um 14:52 Uhr von davie editiert. ]



  • @spieleprogrammierer

    also, ich denke, dass du von c++ keinen blassen dunst hast.
    das war nur eine fangfrage.
    das eigentliche thema war "const", daher habe ich als antwort erwartet
    "parameter ist eine konstante double referenz", und keine erklärung was
    parameter sind.
    deine beiträge in diesem forum sind voll für die Katz.
    deine text sind voll mit rechtschreibfehlern und verwirrend
    geschrieben.
    sehr viel von deinen texten hast du dabei aus den fingernägeln gesaugt, denn es steht sehr viel schwachsinn drinnen.

    also - lernen müssen c++ dann können mitreden in dieses vorumm

    ps: bis dahin nicht soviel wirres zeug posten !



  • Original erstellt von <unwissender>:
    **was ist dann das ?

    const double& GetValue(const& double InValue) const;
    ```**
    

    Ein Fehler: const& double gibt es nicht.



  • Original erstellt von davie:
    **das:
    funktion(int i, int z);
    ist aber kein funktionsaufruf sondern eine deklaration 😉

    btw @unwissender deine frage (welche parameter) war aber auch etwas wirr 🙂

    [ Dieser Beitrag wurde am 26.05.2003 um 14:52 Uhr von [qb]davie** editiert. ][/QB]

    Hängt vom Kontext ab.



  • Warum merkt eigentlich keiner, dass es sich hier um einen Troll handelt.


Anmelden zum Antworten