【发布时间】:2011-12-09 06:04:11
【问题描述】:
假设我有一个返回一个重要结果和几个不重要结果的函数。我声明了它,以便通过引用返回不重要的结果:
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, _, _); 看起来相当清晰。
标签: c++ temporary-objects return-by-reference