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>
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>
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!