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

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

Susan Sarandon
Libérer: 2024-11-28 12:16:15
original
481 Les gens l'ont consulté

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

Passer des paramètres par référence avec des valeurs par défaut en C

En C , lors du passage de paramètres par référence, il n'est pas possible d'attribuer une valeur par défaut valeur au paramètre. Cela génère une erreur lors de la tentative de déclaration de fonctions avec des valeurs par défaut pour les paramètres de référence. Par exemple, le code suivant entraînera une erreur :

virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
Copier après la connexion

Erreur rencontrée :

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
Copier après la connexion

Résolution

Les valeurs par défaut ne peuvent être attribué à des références const, pas à des références non const. Cela est dû à la restriction de C selon laquelle une valeur temporaire (telle que la valeur par défaut) ne peut pas être liée à une référence non const.

Comme solution de contournement, 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);
}
Copier après la connexion

Cependant, cette approche 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!

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