以下の 2 つのコード スニペットを確認してください。サンプル 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;
}