假设我有一个返回重要结果和几个不重要结果的函数。我宣布它使不重要的结果作为参考返回:忽略函数返回参考结果
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