Object Pascal 言語機能に相当する C++ 言語機能
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 ;
}