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 ?
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!