Gleiche Funktion mit const und ohne - Wann und warum?

T& f() { // some code ... }
const T& f() const { // some code ... }

Ich habe das jetzt ein paar Mal gesehen (im Einführungsbuch, das ich bisher studiert habe). Ich weiß, dass die erste Konstante den Rückgabewert const macht, mit anderen Worten: nicht änderbar. Die zweite const erlaubt, dass die Funktion auch für const deklarierte Variablen aufgerufen werden kann, glaube ich.

Aber warum sollten Sie beide Funktionen in ein und derselben Klassendefinition haben? Und wie unterscheidet der Compiler diese? Ich glaube, dass das zweite f () (mit const) auch für Nicht-const-Variablen aufgerufen werden kann.

Antworten auf die Frage(14)

Ihre Antwort auf die Frage