CPP:Const-Correctness

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Antworten
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

CPP:Const-Correctness

Beitrag von Xin » Do Feb 25, 2010 11:07 am

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?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: CPP:Const-Correctness

Beitrag von Kerli » Do Feb 25, 2010 11:54 am

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 :)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: CPP:Const-Correctness

Beitrag von Xin » Do Feb 25, 2010 11:57 am

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. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: CPP:Const-Correctness

Beitrag von Xin » So Feb 28, 2010 5:26 pm

*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 ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten