デフォルト パラメータ

提供: RAD Studio
移動先: 案内検索

Delphi データ型および言語概念のサポート への移動


Pascal コンパイラは現在、コンストラクタに関して C++ との互換性を保つために、デフォルト パラメータを許容します。 C++ とは異なり、Object Pascal のコンストラクタでは、同じ数、同じ型のパラメータを持つことができます。パラメータには一意に名前が付けられるからです。 そのような場合、C++ ヘッダー ファイルの生成時に Object Pascal コンストラクタでダミー パラメータが使用され、それらのコンストラクタが区別されます。 たとえば、TInCompatible という名前のクラス用に、次のような Object Pascal のコンストラクタがあるとします。

 constructor  Create(AOwner: TComponent) ; 
 constructor  CreateNew(AOwner: TComponent) ;

デフォルト パラメータがなければ、これら 2 つのコンストラクタを C++ に変換した場合、次のように、コードにあいまいさが生じます。

 __fastcall  TInCompatible(Classes::TComponent* Owner);
 // C++ version of the Pascal Create constructor 
 
 __fastcall  TInCompatible(Classes::TComponent* Owner);
 // C++ version of the Pascal CreateNew constructor

一方、デフォルト パラメータを使って、TCompatible というクラスの Object Pascal コンストラクタが次のようになっているとしましょう。

 constructor  Create(AOwner: TComponent) ; 
 constructor  CreateNew(AOwner: TComponent; Dummy: Integer = 0) ;

これらを C++Builder に変換した場合、次のように、コードにあいまいさは生じません。

 __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

メモ: デフォルト パラメータに関する主な問題は、Delphi コンパイラ(DCC32)によりデフォルト パラメータのデフォルト値が削除されることです。デフォルト値を削除できなければ、デフォルトがまったくない場合に生じるあいまいさにつながります。RAD Studio ライブラリ クラスまたはサードパーティ製コンポーネントを使用するときは、このことに注意する必要があります。

関連項目