Maison > Article > développement back-end > Pourquoi « const int Operator[](const int index) const » est-il préféré à « int Operator[](const int index) const » lors du retour d'objets ?
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>
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!