重要な結果といくつかの重要でない結果を返す関数があるとします。重要でない結果が参照によって返されるように宣言しました。
int CalculateStuff(int param1, int param2, int& result1, int& result2);
この関数を呼び出して計算を行いたいのですが、呼び出しサイトでは重要でない結果を無視したいと思います。私は次のようにそれを行うことができます:
...
int dummy1, dummy2;
int result = CalculateStuff(100, 42, dummy1, dummy2);
... // do something with the result
ダミー変数を宣言せずに同じことを行う別の方法を検討したいと思います。
int result = CalculateStuff(100, 42, *new int, *new int);
これにはメモリリーク(許容できない)がありますが、「ダミー」の名前よりも明確に(結果を無視して)私の意図を示すという利点があります。
だから、私がそれを次のように書いたらどうなるでしょう:
int result = CalculateStuff(100, 42, auto_ptr(new int).get(), auto_ptr(new int).get());
それは合法ですか?関数のコードが実行されたときに一時的な整数はまだ存在しますか?unique_ptr
代わりに使用する必要がありauto_ptr
ますか?
(コードのリファクタリングを提案しないでください。おそらくそうしますが、最初に、このようなものがどのように機能するかを理解したいと思います)