Seite 1 von 1

CPP:Const-Correctness

Verfasst: Do Feb 25, 2010 11:07 am
von Xin
Todo-Liste: hat geschrieben: cpp:*: const-correctness (zb Rückgabewert von Nichtzuweisungs-Operatoren als const deklarieren…)
Zur Operatorüberladung fehlt nicht mehr viel, also gehe ich davon aus, dass ich bald zum nächsten Kapitel übergehe: Const-Correctness.

Was genau ist hier gewünscht?

Re: CPP:Const-Correctness

Verfasst: Do Feb 25, 2010 11:54 am
von Kerli
Meiner Meinung nach gibt es da zwei wichtige Teile. Erstens wo const überall stehen kann und was es dort bedeutet. Und zweitens wo man es verwenden sollte.

Bei der Anmerkung in der Todo-Liste hab ich mich gerade den Artikel über Operatorenüberladung gelesen und da ist gestanden:

Code: Alles auswählen

Fraction Fraction::operator *( Fraction & rhs );
Das Problem an diesem Code ist das er nicht unbedingt sehr const-korrekt ist und daher oft nicht funktionieren wird und auch zu unbeabsichtigten Fehlern führen kann:
  • 'Fraction& rhs' sollte ein 'const' dazu bekommen, damit man auch konstante Fractions multiplizieren kann.
  • Auch der Rückgabewert sollte ein 'const' bekommen. Grund ist es sinnlosen Code wie folgenden einen Compilerfehler generieren zu lassen:

    Code: Alles auswählen

    (frac1 * frac2) = frac3;
Auch wenn ich das nicht unbedingt schon im Kapitel zur Operatorenüberladung machen würde, so sollte es doch auf jeden Fall bei der const-correctness dabei sein :)

Re: CPP:Const-Correctness

Verfasst: Do Feb 25, 2010 11:57 am
von Xin
Kerli hat geschrieben:Bei der Anmerkung in der Todo-Liste hab ich mich gerade den Artikel über Operatorenüberladung gelesen und da ist gestanden:

Code: Alles auswählen

Fraction Fraction::operator *( Fraction & rhs );
Das Problem an diesem Code ist das er nicht unbedingt sehr const-korrekt ist und daher oft nicht funktionieren wird und auch zu unbeabsichtigten Fehlern führen kann:
  • 'Fraction& rhs' sollte ein 'const' dazu bekommen, damit man auch konstante Fractions multiplizieren kann.
  • Auch der Rückgabewert sollte ein 'const' bekommen. Grund ist es sinnlosen Code wie folgenden einen Compilerfehler generieren zu lassen:

    Code: Alles auswählen

    (frac1 * frac2) = frac3;
Auch wenn ich das nicht unbedingt schon im Kapitel zur Operatorenüberladung machen würde, so sollte es doch auf jeden Fall bei der const-correctness dabei sein :)
Ah... dann schreib mir das doch, damit ich die Zeile nachvollziehen kann. ^^

Die Operatorüberladungskapitel kommen teilweise aus der Konserve. Da muss ich eh nochmal drüber. ^^

Re: CPP:Const-Correctness

Verfasst: So Feb 28, 2010 5:26 pm
von Xin
*push* Habe mit Const-Correctness angefangen...

damit ist dies der Hinweis, dass man sich das angucken und kritisieren kann,
sowie für mich der Hinweis, dass ich Kerlis Meldung nicht vergesse ^^