変数のリファレンス Edit

例えば、

int a;
int &b = a;

とすると、変数 b は変数 a のリファレンス (参照) となる。 この状態で a = 10; とすると、b の値は 10 となる。 逆に b = 20; とすると、a の値も 20 となる。

リファレンス型の宣言には必ず初期値が必要。初期値は既に宣言されている変数名または関数名。 配列を宣言と同時に初期化することはできないため、リファレンス型の配列なるものは存在しないものと思われる。

関数のリファレンス Edit

例えば、関数 int hoge(int a, string b) があるとき、

int &hoge_ref(int a, string b) = hoge;

とすると、hoge_ref は関数 hoge へのリファレンスとなる。

hoge_ref(2, "test");

とすることで、リファレンス先の関数 hoge が呼び出される。 但し、hoge は同一モジュール内に存在しなければならないようだ。

リファレンスを使った例 Edit

int foo(string src, string &out1, string &out2)
{
    if(src == NULL)
    {
        return 0;
    }

    // out1 / out2 は参照渡し。呼出元の変数を書き換える。
    out1 = src + "hoge";
    out2 = "moge" + src;

    return 1;
}

void main()
{
    string a;
    string b;
    int r;

    r = foo("test", a, b);

    // a == "testhoge"
    // b == "mogetest"
}

未調査項目 Edit

  • まさかアクションのリファレンスとかも存在するのか (2006/11/09)

綾織メモ