临时对象存储在哪里?
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
可能会使用堆。
我想知道当调用一个带有 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
可能会使用堆。