C++ 参照で複数の戻り値を返す方法

まずはじめに、C言語でもそうだったように、
C++でも関数の戻り値は常に1つです。

ただ、参照を使って、複数の結果を得る事ができます。

#include <iostream>

using namespace std;

void keisan(int a, int b, int &p1, int &p2);

void main(void) {
      int tasizan = 0;
      int hikizan = 0;

      keisan(20, 5, tasizan, hikizan);

      cout << "足し算=" << tasizan << '\n';
      cout << "引き算=" << hikizan << '\n';

}

void keisan(int a, int b, int &p1, int &p2) {
      p1 = a + b;
      p2 = a - b;
}

keisan関数で足し算、引き算をして計算結果を返します。

計算結果をtasizanとhikizanに格納してもらうようにします。

関数を呼び出す時の記述は値渡しに見えますが、
関数受け取り側で参照受け取りになっているので、
実はアドレス渡しをしている事になります。

表記上は値渡しに見えて、実際はアドレス渡しをしていますから
その辺を良しとするかどうかです。

普通にC言語風のポインタ渡しの方が見た目的に分かりやすいので、
私はあまりC++の参照は使わないようにしています。

そのほかの参照機能についてはコチラで解説しています。

■参考
C言語 複数の戻り値を返す方法