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

Pourquoi « const int Operator[](const int index) const » est-il préféré à « int Operator[](const int index) const » lors du retour d'objets ?

Susan Sarandon
Libérer: 2024-10-31 19:54:02
original
454 Les gens l'ont consulté

Why is `const int operator[](const int index) const` preferred over `int operator[](const int index) const` when returning objects?

Objets const comme valeurs de retour : au-delà du trivial

Bien qu'il soit largement accepté d'utiliser const dans les types de retour chaque fois que cela est possible, la question se pose de savoir pourquoi l'opérateur const int[ ](const int index) const est préféré à int Operator[](const int index) const. Pour approfondir cela, explorons d'abord les subtilités de const dans les types de retour.

Comme mentionné par l'article 03 "Effective C", les qualificatifs const de niveau supérieur sur les types de retour non-classe sont en effet ignorés. Malgré l'écriture de int const foo();, le type de retour reste int. Cependant, ce n’est pas le cas pour les types de retour de référence. La différence entre int& Operator[](int index); et int const& opérateur[](int index) const; est crucial.

Lors du retour des types de classe, le qualificatif const joue un rôle important. Si T const est renvoyé, l'appelant ne peut pas invoquer des fonctions non membres const sur l'objet renvoyé. Prenons l'exemple suivant :

<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

Dans ce scénario, le qualificatif const attaché à gg() empêche l'appelant d'accéder aux fonctions non membres const, telles que f(), garantissant ainsi que l'intégrité de l'objet renvoyé est préservé.

Par conséquent, lors du retour d'objets const, le qualificatif const sur le type de retour sert un objectif au-delà du cas trivial des types de retour non référence. Il garantit que l'appelant interagit avec l'objet renvoyé de manière cohérente, en préservant son état interne conformément à l'intention de la conception de la classe.

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!