J'espère que cette question est sur le sujet.
Je faisais revue de code et je suis tombé sur la fonction suivante: p> Cette fonction est utilisée pour récupérer les valeurs de Les commentaires (utilisés ultérieurement pour la documentation automatique) disent: P > ... cette fonction renvoie par référence le [xxx] et [yyy] ... p>
blockQuote> évidemment la fonction renvoie une valeur booléenne indiquant le succès ou l'échec. Donc, la phrase ci-dessus doit être reformulée. Mais comment? Quel est le terme correct (le cas échéant) pour renvoyer quelque chose, tel qu'il était, au moyen d'un paramètre OUT, ou, en d'autres termes, peupler un argument passé par référence? P> La question est marquée langue étiquette agnostique, parce que ce n'est pas spécifique C ++. Mais il est également marqué C ++ car l'exemple est en C ++. P> p> xxx code> et
yyy code> de certaines classes au moyen de paramètres de sortie. p>
4 Réponses :
dans les mots les plus simples: p>
fonction
quelquefuncunc () code> peut em> modifier strong> paramètres
xxx (std :: string) code> et
yyy (char) code> et retourne le succès ou l'échec (
bool code>). p> blockQuote>
Notez que ce n'est pas (En .NET TERMINS) A Paramètre Réf code>. C'est un paramètre
out code>
"Sur le succès, Bien que j'ai également entendu la phrase "retourner" assez souvent avec des paramètres tapé par référence. P> des magasins code> dans
o_xxx code> et
o_yyy code> les valeurs ..."; magasins dans em> est la façon dont le mode Linux MANPAGE
STRTOUL (3) code> décrit ce que cette fonction fait avec son
endptr code> argument. P>
Merci! A du sens, j'aime ça!
Considérez la manière MSDN. exemple . < / p>
La valeur de retour est décrite dans sa propre section.
Les manipulations avec des paramètres de sortie sont décrites dans leurs propres sections et peuvent être éventuellement répétées dans la section Valeur de retour. P>
Si vous utilisez Doxygen, cela ferait:
/** *- Description : This function ... * * @param[out] xxx ... * @param[out] yyy ... * * @return true for ..., false otherwise * ***********************************************************************/
Je dis généralement que quelque chose à l'effet de "La fonction renvoie une valeur indiquant le succès ou l'échec. En cas de succès
o_xxx code> aura la valeur de [xxx] et
o_yyy code> La valeur de [yyy]. En cas d'échec, les arguments sont inchangés. ".
Les paramètres OUT sont parfois utilisés car il y a plus d'un paramètre à revenir. Si vous les combinez dans une classe, vous pouvez simplement renvoyer une instance. Parfois, les paramètres sont utilisés pour l'efficacité. Enfin, pourquoi passez-vous des données autour? Encapsumé: raconter, ne pas demander!
@ R.martinhofernandes: "En cas d'échec, les arguments sont inchangés" - et notent qu'il s'agit d'une forte garantie d'exception. Donc, si vous dites cela, assurez-vous d'assigner à
o_xxx code> dans la fonction avant i> attribuer à
o_yyy code>, puisque la mission de chaîne est celle qui peut échouer. Ou utiliser des swaps.
@Stevejessop Oh, bien sûr. Alternativement, s'il n'est pas facile de fournir une telle garantie, vous pouvez simplement dire "(...) les arguments auront des valeurs non spécifiées".