我想知道在调用带有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") );
}
答案 0 :(得分:0)
它存储在堆栈中,而不是堆中。但请注意,&
可能会使用堆。