Paramètres par défaut
Remonter à Gestion des types de données et des concepts du langage Object Pascal
Le compilateur Pascal autorise les paramètres par défaut par compatibilité avec C++ concernant les constructeurs. A la différence de C++, les constructeurs Pascal Objet peuvent avoir le même nombre et le même type de paramètres puisqu’ils ont des noms uniques. Dans de tels cas, des paramètres factices sont utilisés dans les constructeurs Pascal Objet pour les distinguer quand les fichiers d’en-tête C++ sont générés. Par exemple, pour une classe nommée TInCompatible, les constructeurs en Pascal Objet peuvent être :
constructor Create(AOwner: TComponent) ;
constructor CreateNew(AOwner: TComponent) ;
Ils pourraient se traduire, sans paramètre par défaut, dans le code C++ suivant qui est ambigu :
__fastcall TInCompatible(Classes::TComponent* Owner);
// C++ version of the Pascal Create constructor
__fastcall TInCompatible(Classes::TComponent* Owner);
// C++ version of the Pascal CreateNew constructor
Par contre, en utilisant les paramètres par défaut, pour une classe nommée TCompatible, les constructeurs Pascal Objet sont
constructor Create(AOwner: TComponent) ;
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0) ;
Qui se traduisent dans le code C++Builder suivant qui n’est pas ambigu :
__fastcall TCompatible(Classes::TComponent* Owner);
// C++ version of the Pascal Create constructor
__fastcall TCompatible(Classes::TComponent* Owner, int Dummy);
// C++ version of the Pascal CreateNew constructor
Remarque : L’élément essentiel concernant les paramètres par défaut est que le compilateur Delphi (DCC32) supprime la valeur par défaut du paramètre par défaut. Si la valeur par défaut n’était pas supprimée, on retomberait sur l’ambiguïté qui a lieu en l’absence de valeur par défaut. Vous devez tenir compte de ce problème quand vous utilisez des classes des bibliothèques RAD Studio ou des composants tiers.