Die Bedeutung der Rückgabe von Const für Nicht-Klassentypen
Frage:
In C , warum müssen wir const int Operator[](Const Int Index) Const anstelle von Int Operator[](Const Int Index) Const verwenden?
Antwort:
Bei Nicht-Klassentypen werden konstante Qualifizierer der obersten Ebene für Rückgabetypen ignoriert. Das bedeutet, dass der Rückgabetyp von
int foo() {}
und
const int foo() {}
als int interpretiert wird. Bei der Rückgabe einer Referenz wird die Konstante jedoch nicht zur obersten Ebene und macht einen erheblichen Unterschied:
int& operator[](int index);
und
int const& operator[](int index) const;
sind unterschiedlich.
Ähnlich , für Rückgabewerte von Klassentypen verhindert die Rückgabe von T const, dass der Aufrufer nicht konstante Funktionen für den zurückgegebenen Wert aufruft:
class Test { public: void f(); void g() const; }; Test ff(); Test const gg(); ff().f(); // legal ff().g(); // legal gg().f(); // illegal gg().g(); // legal
Das obige ist der detaillierte Inhalt vonWarum wird „const int Operator[](Const Int Index) Const' gegenüber „Int Operator[](Const Int Index) Const' für Nicht-Klassen-Typen in C bevorzugt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!