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