假設我有一個返回重要結果和幾個不重要結果的函數。我宣佈它使不重要的結果作爲參考返回:忽略函數返回參考結果
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
嗎?
(請不要建議重構我的代碼,我可能會 - 但首先我想了解這個東西是如何工作的)
添加爲評論,因爲它實際上並不回答你的問題 - 但我通常會聲明一個臨時調用_並傳遞,如果出現這種情況。 「CalculateStuff(100,42,_,_);似乎相當清楚 – jcoder