Maison >développement back-end >C++ >Pourquoi la const de niveau supérieur sur les types de retour hors classe semble-t-elle redondante ?

Pourquoi la const de niveau supérieur sur les types de retour hors classe semble-t-elle redondante ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 07:56:02986parcourir

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

Les types de retour hors classe bénéficient-ils de Const ?

En C , l'utilisation de const a été soulignée comme une bonne pratique pour les valeurs immuables traitement des données. Cependant, il peut sembler que la qualification des types de retour hors classe avec const ne produit aucune différence notable :

<code class="cpp">int foo() { }
const int foo() { }</code>

Pourquoi, alors, cette distinction existe-t-elle, comme l'illustre la classe Bigint :

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

Explication :

Les qualificatifs const de niveau supérieur appliqués aux types de retour des fonctions non-classes sont effectivement ignorés, rendant les deux déclarations ci-dessus identiques. Cependant, ce n'est pas le cas pour les références :

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

Dans de tels scénarios, la distinction est significative.

De plus, les qualificatifs const de niveau supérieur sur les types de retour sont également ignorés dans les déclarations de fonction. .

La pertinence des qualificatifs const s'étend également aux types de retour de classe. Si une fonction renvoie T const, toute tentative d'invocation de fonctions non const sur l'objet renvoyé entraînera une erreur, comme illustré ci-dessous :

<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>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn