まずはじめに、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言語 複数の戻り値を返す方法