Maison > développement back-end > C++ > le corps du texte

Pourquoi ne puis-je pas surcharger les fonctions basées sur la constance des arguments sans pointeur/sans référence en C ?

Linda Hamilton
Libérer: 2024-11-20 11:40:41
original
300 Les gens l'ont consulté

Why Can't I Overload Functions Based on the Constness of Non-Pointer/Non-Reference Arguments in 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;
};
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal