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
Freigeben: 2024-10-30 13:26:35
Original
612 Leute haben es durchsucht

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() {}
Nach dem Login kopieren

und

const int foo() {}
Nach dem Login kopieren

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);
Nach dem Login kopieren

und

int const& operator[](int index) const;
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage