Nutzen von konstanten Parametern



  • Ich habe folgenden Code:

    int test(const int i)
    {
    	return 0;
    }
    

    Der Parameter i ist weder eine Referenz, noch ein Zeiger. const im Zusammenhang mit Referenzen oder Zeigern würde Sinn ergeben, weil i verändert werden könnte.

    Warum spuckt dann aber VS 2010 keine Bemerkung als Warning oder Message aus?


  • Mod

    inc7 schrieb:

    Warum spuckt dann aber VS 2010 keine Bemerkung als Warning oder Message aus?

    Was erwartest du denn?



  • Warum sollte es? Es macht einfach nicht viel Sinn, aber Ok ist es allemal. So kannst du verdeutlichen, dass innerhalb der Funktion der Wert nicht verändert werden darf. Das ist es nach aussen auch ohne das const, aber innerhalb der Funktion nicht.



  • Dass VS 2010 sagt, dass es keinen Sinn macht.


  • Mod

    inc7 schrieb:

    Dass VS 2010 sagt, dass es keinen Sinn macht.

    Es macht aber welchen, wenn auch wenig und verwirrend. Das i ist in deiner Funktion konstant und du kannst es nicht ändern.



  • SeppJ schrieb:

    Es macht aber welchen, wenn auch wenig und verwirrend. Das i ist in deiner Funktion konstant und du kannst es nicht ändern.

    Kannst du mir einen Anwendungsfall nennen, wo sowas gebraucht wird?


  • Mod

    inc7 schrieb:

    Kannst du mir einen Anwendungsfall nennen, wo sowas gebraucht wird?

    Es verhindert, dass du versehentlich das i änderst. Genau so wie alle anderen const, die nicht dazu dienen, const-Correctness zu gewähren.



  • Es kann durch das const kein Fehler geschehen, wozu sollte der Compiler also eine Warnung ausgeben? Und was soll drinstehen? Achtung, Trottel an der Tastatur?



  • Jetzt ist es bisschen klarer für mich. Danke für eure Antworten.



  • Kann es sein, dass dein Compiler dich warnt weil i gar nicht benutzt wird, dann wäre das aber nach meiner Auffassung eher ein Hinweis als eine Warnung?



  • justchris schrieb:

    Kann es sein, dass dein Compiler dich warnt weil i gar nicht benutzt wird, dann wäre das aber nach meiner Auffassung eher ein Hinweis als eine Warnung?

    Was hat das mit dem const zu tun?



  • Nix direkt, würde mich aber mal interessieren ob dann die Warnung weg ist.



  • justchris schrieb:

    Nix direkt, würde mich aber mal interessieren ob dann die Warnung weg ist.

    Der Compiler warnt doch eben nicht.


Log in to reply