Warum geht virtual const nicht?



  • [müll]



  • Hi,

    es macht durchaus Sinn built-in Typen const zu machen, das schlägt Meyers sogar vor.
    Es hat den Sinn, das man von außen das Teil nicht verändern kann.
    Beispielsweise liefert GetA jetzt const int:

    GetA() = 10
    

    Dies klappt nun nicht und es ist gut, dass das nicht klappt, denn es ist nicht sinnvoll so etwas zu machen, aber es kann durchaus passieren, dass man = statt == schreibt. (als Tippfehler natürlich ;))

    MfG Eisflamme



  • das halte ich für übetrieben, wer versucht einem temporären Objekt etwas zuzuweisen, muss nicht ganz dicht sein.



  • Mis2com schrieb:

    es macht durchaus Sinn built-in Typen const zu machen, das schlägt Meyers sogar vor.

    Wage ich zu bezweifeln:

    denn GetInt()=3; funktioniert ja sowieso nicht.



  • EnERgYzEr schrieb:

    virtual const ClassInteger& GetAnzahlDerTiereDieserGattung()
    

    Das gibt eine nicht konstante Referenz auf eine konstante ClassInteger-Instanz zurück. Wenn das & nicht wäre, würde es hinkommen und sogar Meyers' Empfehlungen entsprechen - denn dann könnte man "GetAnzahl...() = 10" nicht schreiben.



  • operator void schrieb:

    Das gibt eine nicht konstante Referenz auf eine konstante ClassInteger-Instanz zurück. Wenn das & nicht wäre, würde es hinkommen und sogar Meyers' Empfehlungen entsprechen - denn dann könnte man "GetAnzahl...() = 10" nicht schreiben.

    seit wann gibt es nicht konstante Referenzen?



  • Shlo schrieb:

    operator void schrieb:

    Das gibt eine nicht konstante Referenz auf eine konstante ClassInteger-Instanz zurück. Wenn das & nicht wäre, würde es hinkommen und sogar Meyers' Empfehlungen entsprechen - denn dann könnte man "GetAnzahl...() = 10" nicht schreiben.

    seit wann gibt es nicht konstante Referenzen?

    Warum soll es Referenzen, welche nicht konstant sind, nicht geben?

    mfg
    v R



  • virtuell Realisticer schrieb:

    Warum soll es Referenzen, welche nicht konstant sind, nicht geben?

    mfg
    v R

    dass man einer Referenz nach Initialisierung ein anderes Objekt zuweisen kann ist mir neu... Oder wovon war nochmal die Rede?



  • Shlo schrieb:

    virtuell Realisticer schrieb:

    Warum soll es Referenzen, welche nicht konstant sind, nicht geben?

    mfg
    v R

    dass man einer Referenz nach Initialisierung ein anderes Objekt zuweisen kann ist mir neu... Oder wovon war nochmal die Rede?

    Nein das geht natuerlich nicht. Aber es gibt konstante Referenzen und nicht
    konstante Referenzen:

    int i = 5;
    const int &const_ref = i;
    int &ref = i;
    
       const_ref = 4; //ups
       ref = 4;
    

    Das meinte ich damit 🙂

    mfg
    v R



  • in dem Fall ist nicht die Referenz konstant sondern das eigentliche Objekt


Anmelden zum Antworten