const



  • Hallo miteinander!

    const steht ja für "constant". Allerdings macht es einen Unterschied, ob const jeweils vor einem Objekt / Variable steht, oder dahinter.

    Beispiel:
    void add(const E& obj) { ... }
    Ist es korrekt, dass hier "obj" in der Methode nicht verändert werden darf?

    double square:: get_diagonal_length () const
    Ist hier korrekt, dass KEINE Variable in der Methode verändert werden darf?

    Danke für die Aufklärung.



  • Pitii schrieb:

    double square:: get_diagonal_length () const
    Ist hier korrekt, dass KEINE Variable in der Methode verändert werden darf?

    Nein. *this darf nicht verändert werden.


  • Mod

    Pitii schrieb:

    Hallo miteinander!

    const steht ja für "constant". Allerdings macht es einen Unterschied, ob const jeweils vor einem Objekt / Variable steht, oder dahinter.

    Das const bezieht sich auf das was links von ihm steht, es sei denn da ist gar nichts mehr.

    Beispiel:
    void add(const E& obj) { ... }
    Ist es korrekt, dass hier "obj" in der Methode nicht verändert werden darf?

    obj ist eine Referenz auf ein konstantes E. Das worauf sich die Referenz bezieht darf nicht geändert werden, und Referenzen selbst (alos in dem sinne worauf sie sich beziehen) sind ohnehin immer konstant.

    double square:: get_diagonal_length () const
    Ist hier korrekt, dass KEINE Variable in der Methode verändert werden darf?

    Es darf keine Membervariable von square verändert werden (Ausnahme: mutable Member) und auch keine anderen Memberfunktionen aufgerufen werden, die nicht const sind. Mit lokalen Variablen in der Funktion darf man machen was man will.


  • Mod

    EOutOfResources schrieb:

    Nein. this darf nicht verändert werden.

    this ist ohnehin kein lvalue. Du meinst wohl *this.



  • Geändert



  • mutable Member dürfen auch geändert werden.


  • Mod

    314159265358979 schrieb:

    mutable Member dürfen auch geändert werden.

    Hab ich volatile gesagt? Ich meinte natürlich mutable. Geändert. Bei so Sachen die man nie braucht kommt man leicht durcheinander.


Log in to reply