临时对象存储在哪里?

时间:2015-05-12 13:31:36

标签: c++ object temporary

我想知道在调用带有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") );
}

1 个答案:

答案 0 :(得分:0)

它存储在堆栈中,而不是堆中。但请注意,&可能会使用堆。