Heim > Backend-Entwicklung > C++ > Hauptteil

Warum erscheint die Konstante der obersten Ebene bei Rückgabetypen, die keine Klasse sind, überflüssig?

Linda Hamilton
Freigeben: 2024-11-04 07:56:02
Original
930 Leute haben es durchsucht

Why Does Top-Level Const on Non-Class Return Types Seem Redundant?

Profitieren Nicht-Klassen-Rückgabetypen von Const?

In C wurde die Verwendung von const als bewährte Methode für Immutable hervorgehoben Datenverarbeitung. Es scheint jedoch, dass die Qualifizierung von Nicht-Klassen-Rückgabetypen mit const keinen merklichen Unterschied ergibt:

<code class="cpp">int foo() { }
const int foo() { }</code>
Nach dem Login kopieren

Warum gibt es dann diese Unterscheidung, wie sie am Beispiel der Bigint-Klasse veranschaulicht wird:

<code class="cpp">int& operator[](const int index);
const int operator[](const int index) const;</code>
Nach dem Login kopieren

Erklärung:

Const-Qualifizierer der obersten Ebene, die auf die Rückgabetypen von Nicht-Klassenfunktionen angewendet werden, werden effektiv ignoriert, wodurch die beiden obigen Deklarationen identisch werden. Dies gilt jedoch nicht für Referenzen:

<code class="cpp">int& operator[](int index);
int const& operator[](int index) const;</code>
Nach dem Login kopieren

In solchen Szenarien ist die Unterscheidung sinnvoll.

Darüber hinaus werden konstante Qualifizierer der obersten Ebene für Rückgabetypen in Funktionsdeklarationen ebenfalls ignoriert .

Die Relevanz von const-Qualifizierern erstreckt sich auch auf Klassenrückgabetypen. Wenn eine Funktion T const zurückgibt, führt jeder Versuch, nicht konstante Funktionen für das zurückgegebene Objekt aufzurufen, zu einem Fehler, wie unten dargestellt:

<code class="cpp">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</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erscheint die Konstante der obersten Ebene bei Rückgabetypen, die keine Klasse sind, überflüssig?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!