参照渡し
読み:さんしょうわたし

 C++などにおける、関数への引数の渡し方の一つ。
目次

概要
 Cでは、値渡しポインター渡しが可能だった。
 C++では、C++で追加されたクラスの実装を自然にするため、特に、代入演算子などのオーバーロードコンストラクターを書きやすくするために、参照渡しが作られた。
 なお、参照渡しに対応するプログラミング言語は多くはない。他のプログラミング言語は、ポインター渡しに似た「参照の値渡し」として実装されることが多い。

特徴

用途
 参照渡しで引数を与えると、受け側の関数は、その変数を参照として受け取る。
 参照とはつまり変数の別名であるので、参照渡しを受け取った関数内では、それを元の変数そのもののように扱うことができる。
 なお、参照渡しはポインター渡しとは違い、引数にNULLポインターを渡す、というような操作はできない。

使用例
 参照渡し受ける側の関数は、引数を参照として定義するため、引数の変数名にアンパサンド記号(&)を冠する。
void hoge(int &var)
{
    var = 123;
}
 関数を呼ぶ側は、特に演算子を付けず、値渡しと同様に記述する。
int fuga()
{
    int num = 0;
    hoge(num);
    return num;
}
 呼ぶ側からは、見ただけだと値渡しなのか参照渡しなのか分からないという難点がある。

再検索