Les opérateurs standard intégrés peuvent-ils avoir des pointeurs de fonction ?
En C , vous ne pouvez pas faire directement référence aux pointeurs de fonction des opérateurs intégrés car ils ne représentent pas réellement des objets fonction. Selon la norme C 11, les opérateurs intégrés sont spécifiquement conçus pour la résolution des surcharges et ne peuvent pas être utilisés à d'autres fins.
Surmonter les limitations :
Pour contourner pour cela, vous pouvez utiliser les objets fonctions définis dans la bibliothèque standard (§20.8). Ces objets fonction, tels que égal_to pour les comparaisons, se désintègrent en l'opérateur équivalent dans leur fonction Operator(). Ils peuvent servir d'arguments valides pour les pointeurs de fonction.
Accès aux opérateurs de classe standard :
Bien que les opérateurs intégrés ne soient pas directement accessibles, vous pouvez utiliser les opérateurs de bibliothèque standard comme pointeurs de fonction. Cependant, vous devez spécifier l'instance de modèle appropriée pour guider le compilateur. Par exemple, si vous souhaitez utiliser l'opérateur std::basic_string, vous devrez spécifier explicitement son type de modèle comme suit :
<code class="cpp">typedef std::basic_string<char> string_type; ... std::cout << test_function<string_type>(a, b, &std::operator+) << std::endl;</code>
Conclusion :
Bien que les opérateurs intégrés ne puissent pas avoir de pointeurs de fonction directs en raison de leur rôle unique, vous pouvez accéder à leurs fonctionnalités via des objets de fonction fournis par la bibliothèque standard ou en spécifiant les instances de modèle nécessaires pour les opérateurs de classe standard.
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!