Предположим, у меня есть функция, которая возвращает важный результат и несколько неважных результатов. Я объявил это так, чтобы неважные результаты были возвращается по ссылке:
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
?
(Пожалуйста, не предлагайте рефакторинг моего кода; я, вероятно, сделаю это, но сначала я хочу понять, как это работает)