请检查下面的两个代码片段。虽然在示例 2 中,显然存在悬空引用问题,因为传递了局部变量的 ref,您认为示例 1 中是否存在相同的问题?我自己认为样本 1 是正确的。当数据被推送到数据结构( )中时,引用被获取( isstl::queue
的函数头)。所以通过这里返回数据应该没有问题。或者有吗?enqueue
void enqueue(const int &data)
&data
样品 1:
int const& dequeue()
{
_mutex.lock();
int &data = _queue.back();
_queue.pop();
_mutex.unlock();
return data;
}
样本 2:
int const& dequeue()
{
_mutex.lock();
int data = _queue.back();
_queue.pop();
_mutex.unlock();
return data;
}