如果这是重复的话,我深表歉意:搜索这个并不容易。
示例代码取自rtorrent:
m_bindings[KEY_UP] = m_bindings['P' - '@'] = std::bind(&ElementDownloadList::receive_prev, this);
双重值设置是什么意思,如何解释这一说法?
答案 0 :(得分:6)
从右边的等号到左边计算表达式。语句a = b = c
可以重写a = (b = c)
。 =
操作的结果是分配的值。因此(b = c)
的结果为c
,使下一个操作等效于a = c
。
答案 1 :(得分:2)
这称为运算符链接。您正在做的是将右手operator =
的返回值分配给左手operator =
这等同于做
m_bindings['P' - '@'] = std::bind(&ElementDownloadList::receive_prev, this);
m_bindings[KEY_UP] = m_bindings['P' - '@'];
但是可以为您节省一行代码。这也使您免于再次调用operator[]
,这可能会很昂贵。就个人而言,除非性能确实是一个问题,否则我将使用2行版本的代码使代码更易于阅读。
答案 2 :(得分:2)
这类似于x = y = 1
,是y = 1
和x = y
的简写。