假设我有一个返回一个重要结果和几个不重要结果的函数。我声明了它,以便通过引用返回不重要的结果:
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
吗?
(请不要建议重构我的代码;我可能会 - 但首先我想了解这些东西是如何工作的)