C++:Comment passer de référence à la fonction dans une autre fonction?
J'ai lu sur des pointeurs de fonction et sur leur utilisation en tant que paramètres pour d'autres fonctions. Ma question est, comment voulez-vous passer une fonction par référence sans l'aide de pointeurs? J'ai essayé de trouver la réponse sur Internet mais je n'ai pas trouvé une bonne réponse. Je sais que vous pouvez passer des variables par référence comme ceci: void funct(int& anInt);
. Comment voulez-vous faire quelque chose de similaire à cela, mais au lieu d'une référence à une variable une référence à une fonction a été le paramètre? Aussi comment utiliseriez-vous une référence à la fonction dans le corps d'une fonction?
Remarque: Vous ne pouvez pas passer des fonctions. Vous ne pouvez passer des références ou des pointeurs de fonctions.
OriginalL'auteur Hudson Worden | 2011-08-22
Vous devez vous connecter pour publier un commentaire.
Cheers & hth.,
Car un pointeur peut être null ou invalide. Une référence garantit qu'il est valide et non nulle (il n'est pas null-référence), ou bien qu'il y est une erreur dans le programme.
P. Steinbach: "ou bien qu'il y est une erreur dans le programme de" ça sonne bien en théorie, mais si vous avez quelque chose comme
sometype &ref = *ptr;
l'adresse du pointeur sera tout simplement copié dans la barre d'adresse de référence, qui peut être non valable ou nul. Vous pourriez dire que la déclaration ci-dessus est un comportement indéfini quandptr
est non valable ou nul, mais il ne sera pas une indication de ceci lors de la compilation ou de l'exécution, de sorte qu'il est encore au programmeur de s'assurer qu'il est valide et non-nulle, de même que si vous avez utilisé un pointeur. Donc, je le dis il n'y a pas de différence pour le programmeur.Je pense qu'il y a une grande différence. Si vous construisez vous ensemble de la base de code avec l'aide des références dans tous les API dans laquelle la valeur null n'est pas une bonne valeur, le
sometype &ref = *ptr;
situation ne viens pas souvent parce que vous aurez des références partout. Il y a aussi un semantical différence entre l'acceptation d'une référence et d'un pointeur dans une API. L'acceptation d'une référence précise clairement que la fonction ne peut être appelée avec la valeur null. Si c'est une référence, puis c'est à l'appelant de la responsabilité, si c'est un pointeur, alors il est le destinataire de l'appel.OriginalL'auteur Cheers and hth. - Alf