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

Quand dois-je renvoyer des objets ou des pointeurs const en C ?

Patricia Arquette
Libérer: 2024-10-29 05:46:31
original
1082 Les gens l'ont consulté

When Should I Return const Objects or Pointers in C  ?

Dois-je renvoyer des objets ou des pointeurs const ?

Dans « Article C 03 en vigueur », il est recommandé d'utiliser const chaque fois que cela est possible. Par exemple, une classe Bigint pourrait avoir à la fois une version mutable et une version const d'une fonction Operator[] pour accéder à ses données.

Cependant, la distinction entre renvoyer un objet const et renvoyer un objet non const est moindre. clear pour les fonctions simples comme foo() qui renvoient des types primitifs. On pourrait supposer qu'ils se comportent de manière identique, mais ce n'est pas tout à fait vrai.

Qualificateurs cv de haut niveau et types de retour

Dans le cas de types primitifs, les types primitifs les qualificatifs de niveau CV sur les types de retour sont ignorés. Par conséquent, les déclarations de fonction suivantes sont fonctionnellement équivalentes :

<code class="cpp">int foo();
int const foo();</code>
Copier après la connexion

Les deux fonctions renvoient un int, quel que soit le qualificatif const sur le type de retour.

La signification pour les types de classe et Références

La distinction devient cruciale lorsqu'il s'agit de types de classes ou de références. Le renvoi d'un const T empêche l'appelant d'invoquer des fonctions non membres const sur la valeur renvoyée. 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

Ici, gg() renvoie un objet Test const, qui interdit d'appeler sa fonction f() membre non const.

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