临时对象存储在哪里?

Where is the temporary object stored?

我想知道当调用一个带有 const 引用的函数时临时对象存储在哪里。

在下面的场景中,在 foo 函数中我们创建了一个临时的 std::string 对象并将其作为参数传递给print_name函数。 它需要一个 const 引用。它是否存储在堆上的某个地方,并且一旦 print_name 函数超出范围就会被销毁?

谢谢

void print_name(const std::string& name)
{
      std::cout << name << std::endl;
}

void foo()
{
    print_name( std::string("John") );
}

它存储在栈上,而不是堆上。但是请注意,std::string 可能会使用堆。