Object Pascal 言語機能に相当する C++ 言語機能

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

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


Object Pascal の var パラメータおよび型なしパラメータは、C++ に本来備わっている機能ではありません。どちらにも、相当する C++ 言語機能があり、C++Builder で使用されます。

var パラメータ

C++ にも Object Pascal にも、"参照渡し" の概念があります。 これらは変更可能な引数です。 Object Pascal では、var パラメータと呼ばれます。 var パラメータを取る関数の構文は次のとおりです。

 procedure  myFunc( var  x : Integer);

C++ では、この種のパラメータは、次のように、参照で渡さなければなりません。

 void  myFunc( int & x);

C++ の参照もポインタもオブジェクトの変更に使用できます。ただし、参照の方が var パラメータにより近いと言えます。ポインタとは異なり、参照は再バインドできず、var パラメータも再割り当てできませんが、どちらも参照先の値を変更できるからです。

型なしパラメータ

Object Pascal では、型指定のないパラメータを使用できます。これらのパラメータは、パラメータ型の定義されていない関数に渡されます。受け取り側の関数では、パラメータを既知の型にキャストしてから使用する必要があります。C++Builder では、型なしパラメータを void へのポインタ(void *)と解釈します。受け取り側の関数では、void ポインタを、目的とする型のポインタにキャストする必要があります。以下はその例です。

 int  myfunc( void * MyName) 
 
 { 
 // Cast the pointer to the correct type; then dereference it . 
 int * pi =  static_cast < int *>(MyName) ; 
 return  1 + *pi ; 
 
 }

関連項目