質問: compose2(h,i); cout << addr1 << ':' << h << ',' << i << endl; // Outputs were same... } ```
回答: compose1は参照渡しcompose2は値渡しですね。 参照渡しの場合はデータの中身をコピーせず、そのアドレス(ポインター)を渡します。 値渡しの場合は、データがコピーされます。 string型の場合、文字数が多くなればなるほど値渡しではコピーに時間がかかって しまいますが、参照渡しの場合はコピーしないので、文字列の長さに関係なく、 一定時間ですみます。 また、参照渡しの場合、呼ばれた関数側で値を変更すると、それは元データを変更していることになりますが、値渡しの場合は元データは変わりません。