Maison > développement back-end > C++ > le corps du texte

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

Linda Hamilton
Libérer: 2024-11-04 07:56:02
original
931 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!