Paramètres par défaut

De RAD Studio
Aller à : navigation, rechercher

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.

Voir aussi