在以下(传统)代码块中,popped_value的赋值是有效还是应该有memcpy?
bool peek(value_type& popped_value)
{
bool retval=false;
RWLock::ScopedReadLock lock(queueLock);
if ( ! m_queue.empty())
{
popped_value=m_queue.front(); //question...
retval=true;
}
return retval;
}
我不想将参数更改为指针。
答案 0 :(得分:2)
在创建引用变量时,唯一可以设置引用变量引用的对象的位置:
Type & ref = value;
语句在为该引用分配值时,您不会更改引用变量引用的内容,例如reference_variable = value;
。而是改变引用变量引用的东西的值。
这几乎肯定是引用的代码块中所需的行为。
答案 1 :(得分:1)
那很好,而且我希望这样写。
如果value_type
是自定义类,则会调用一些value_type operator=(...)
。据推测,这种方法的实施是理智的。