我可以为非const参考参数赋值吗?

时间:2014-08-16 18:37:14

标签: c++

在以下(传统)代码块中,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;
    }

我不想将参数更改为指针。

2 个答案:

答案 0 :(得分:2)

在创建引用变量时,唯一可以设置引用变量引用的对象的位置:

  • 对于全局变量或局部变量,定义变量的Type & ref = value;语句
  • 对于某个类的非静态数据成员,该类的构造函数中的初始化列表,或
  • 如果某个函数的参数是一个引用,则在调用该函数的语句中。

在为该引用分配值时,您不会更改引用变量引用的内容,例如reference_variable = value;。而是改变引用变量引用的东西的值。

这几乎肯定是引用的代码块中所需的行为。

答案 1 :(得分:1)

那很好,而且我希望这样写。

如果value_type是自定义类,则会调用一些value_type operator=(...)。据推测,这种方法的实施是理智的。