Partage
  • Partager sur Facebook
  • Partager sur Twitter

Quel est le meilleur renvoie d'une fonction

Sujet résolu
    14 avril 2019 à 18:31:20

    Salut

    Ca fais quelques temps que je me pose une question, et je voudrais savoir quelle est la meilleur facon de retourner un type ou un objet.

    En passant par un return du type voulu ou par des references dans les arguments de la fonction. Par meilleur facon, j'entends la plus rapide.

    -
    Edité par Cencoremoi 14 avril 2019 à 18:32:07

    • Partager sur Facebook
    • Partager sur Twitter
      14 avril 2019 à 20:03:40

      Ça dépend du contexte, mais 99% du temps, un retour de valeur est mieux et plus efficace.

      L'un des seuls moments ou un argument de sortie est préférable, est pour "recycler la mémoire". Par exemple, std::getline lit une ligne et la met dans un std::string. Il va y avoir une ou plusieurs allocations dynamique pour accumuler les caractères dans std::string. Si je lis 3 lignes il faudra accumuler 3 fois les caractères dans la chaîne et il y aura au moins 3 allocations dynamiques fait par std::string. Sauf que si j'utilise toujours la même std::string, les allocations dynamiques vont être réduites, car std::string conserve le buffer d'allocation. Le premier appel ferra une allocation, le second probablement pas, et le troisième pareil.

      Après, il y a toujours possibilité de faire un hybride avec un prototype de la forme std::string foo(std::string s = std::string()) ou avec une rvalue, ou 2 fonctions: une qui prend une référence et une qui retourne la valeur (et utilise la première pour faire le traitement).

      • Partager sur Facebook
      • Partager sur Twitter
        14 avril 2019 à 23:04:52

        Dac merci pour ta réponse
        • Partager sur Facebook
        • Partager sur Twitter

        Quel est le meilleur renvoie d'une fonction

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown