変数を reference で返す

関数で static 変数に値を格納して reference で返します。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. 関数で static 変数に格納した値を reference で返します。
    関数の型の後に & が付けられていることに注目して下さい。
    これが int 型の変数を reference で返す指定です。
    int& func(int);
  2. func() 関数のソースコーです。
    param で受け取った値を二倍して val に格納して return で返します。
    val が static で宣言されていることに注目して下さい。
    ローカル変数のままでは func() 関数が終了した時点で領域が開放されてしまいます。
        int& func(int param)
        {   static int  val;
            val = param * 2;
            return val;
        }
        
  3. main() 関数を見てみましょう。
    func(234) の結果を int& alias に格納して印字しています。
    alias に格納されるのは func() 関数で定義した val の別名です。
    印字される値は幾らでしょう?。
        int main()
        {
            int& alias = func(234);
            std::cout << alias << std::endl;
            return 0;
        }
        
  4. alias の領域を次のように分けて書いてはエラーになります。
    int& がエイリアス(別名)の宣言なので、これでは何の別名かが解りません。
        int main()
        {
            int& alias;     //ERROR
            alias = func(234);
        

【演習】

同じプログラムをポインタを使ってプログラムして、reference の意味を理解して下さい。

超初心者のプログラム入門(C/C++)