Это сильно зависит от реализации, но они, вероятно, находятся в автоматическом хранилище .
Обратите внимание, что область действия может быть нелогичной из-за оптимизации.
Следующее:
class A
{
//...
};
//....
A foo()
{
A a;
return a;
}
Здесь объект a
не обязательно находится только внутри области действия функции, но может произойти RVO.
Кроме того, при передаче по значению временного объекта он может не разрушиться сразу.
void foo(A a);
//...
foo( A() );
Здесь временный объект не обязательно присутствует только в этой строке, но может быть создан непосредственно в стеке аргументов метода.