Heim >Backend-Entwicklung >C++ >Warum wird „const int Operator[](Const Int Index) Const' gegenüber „Int Operator[](Const Int Index) Const' für Nicht-Klassen-Typen in C bevorzugt?

Warum wird „const int Operator[](Const Int Index) Const' gegenüber „Int Operator[](Const Int Index) Const' für Nicht-Klassen-Typen in C bevorzugt?

DDD
DDDOriginal
2024-10-30 13:26:35582Durchsuche

Why is `const int operator[](const int index) const` preferred over `int operator[](const int index) const` for non-class types in C  ?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn