根据 类 的移位运算符用法

Shift operator usage in terms of classes

我有这行 C++ 代码,但不知道移位运算符的作用:

vRecv >> locator >> hashStop

标识符有以下类型:

在这种情况下,什么对我来说很重要?

查看 BitCoin documentation. vRecv is an instance of CDataStream which overloads the operator>> 以读取和反序列化数据。

背景

理解表达式,precedence and associativity of operators are important. In C++, the >> operator is left-associative,这意味着你可以重写你的表达式

(vRecv >> locator) >> hashStop;

// Or in terms of actual function calls...
( vRecv.operator>>(locator) ).operator>>(hashStop);

解读

查看 code for the operator>> you see that the method takes an argument of type T and returns a reference to itself. In your particular case, the argument is an instance of CBlockLocator (a STL vector of uint256 elements). Notice that the operator>> calls Unserialize,它有效地从流中读取字节。

因此

(vRecv >> locator)

vRecv 流中读取字节到您的 locator 对象中,returns 相同的流意味着接下来要执行

vRecv >> hashStop

推进流以将字节读入 hashStop 对象。所以,长话短说:用流.

中的字节填充locatorhashStop对象