関数の戻り値の型として void
キーワードを使用した場合は、関数が値を返さないことを示します。 関数のパラメーター リストで void
を使用した場合は、関数がパラメーターを受け取らないことを示します。 ポインターの宣言で void
を使用した場合は、ポインターが "汎用" であることを示します。
ポインターの型が void*
の場合、そのポインターでは、const
または volatile
キーワードを使って宣言されていない任意の変数を指し示すことができます。 void*
ポインターは、別の型にキャストしない限り、逆参照できません。 void*
ポインターは、他の型のデータ ポインターに変換できます。
C++ では、void
ポインターは free 関数 (クラスのメンバーではない関数)、または静的メンバー関数を指し示すことができますが、非静的メンバー関数を指し示すことはできません。
void
型の変数を宣言することはできません。
スタイルの問題として、C++ コア ガイドラインでは、 void
を使用して空の仮パラメーター リストを指定しないことをお勧めします。 詳細については、「 C++ Core Guidelines NL.25: don't use void
as an argument typeを参照してください。
例
// void.cpp
void return_nothing()
{
// A void function can have a return with no argument,
// or no return statement.
}
void vobject; // C2182
void *pv; // okay
int *pint; int i;
int main()
{
pv = &i;
// Cast is optional in C, required in C++
pint = (int *)pv;
}