Maison > Article > développement back-end > Pourquoi ne puis-je pas surcharger les fonctions basées sur la constance des arguments sans pointeur/sans référence en C ?
Surcharge de fonctions avec des arguments Const
En C, la surcharge de fonctions permet d'utiliser plusieurs fonctions portant le même nom en fonction des arguments passés à eux. Cependant, dans certaines situations, la surcharge d'une fonction basée uniquement sur la constance d'un type sans pointeur et sans référence n'est pas réalisable.
Considérez l'extrait de code suivant :
class Test { public: int foo(int); int foo(const int) const; };
Dans Dans cet exemple, notre intention est de surcharger la fonction foo, où une fonction est une fonction const et l'autre ne l'est pas. Pourtant, ce code entraîne une erreur de compilation indiquant que la fonction ne peut pas être surchargée.
Pourquoi cela se produit-il ?
Le compilateur ne peut pas lever l'ambiguïté sur la fonction à appeler malgré la présence du mot-clé const sur l'argumentation. Lorsqu'elle est transmise par valeur, la valeur est copiée quelle que soit la constance de l'argument. Par conséquent, la const sur l'argument n'est pertinente que dans la définition de la fonction elle-même.
Par conséquent, le compilateur est incapable de déterminer quelle version de la fonction foo appeler en fonction uniquement de la constance de l'argument.
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!