Maison >développement back-end >C++ >Les fonctions C peuvent-elles avoir des valeurs par défaut pour les paramètres de référence non constants ?

Les fonctions C peuvent-elles avoir des valeurs par défaut pour les paramètres de référence non constants ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-29 17:54:11684parcourir

Can C   Functions Have Default Values for Non-Const Reference Parameters?

Valeur par défaut du paramètre référencé en C

Lors du passage d'un paramètre par référence en C, pouvez-vous lui spécifier une valeur par défaut ?

Considérez la déclaration de fonction suivante :

virtual const ULONG Write(ULONG &State = 0, bool sequence = true);

Tenter de compiler ce code entraîne un erreur :

error C2440: 'default argument' : cannot convert from 'const int' to 'unsigned long &'
A reference that is not to 'const' cannot be bound to a non-lvalue

La réponse

Les valeurs par défaut ne peuvent être attribuées qu'à des références constantes, et non à des références non constantes. En effet, C interdit de lier une référence temporaire (dans ce cas, la valeur par défaut) à une référence non constante.

Pour contourner cette contrainte, vous pouvez utiliser une instance réelle comme valeur par défaut :

static int AVAL = 1;

void f( int &x = AVAL ) {
   // stuff
} 

int main() {
     f();       // equivalent to f(AVAL);
}

Cependant, cette méthode a une applicabilité pratique limitée.

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!

Déclaration:
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