根据 类 的移位运算符用法
Shift operator usage in terms of classes
我有这行 C++ 代码,但不知道移位运算符的作用:
vRecv >> locator >> hashStop
标识符有以下类型:
- vRecv:
CDataStream CNetMessage::vRecv
,CDataStream class 和 CNetMessage public 属性的实例 class
- 定位器:
CBlockLocator locator
,CBlockLocator 结构的实例
- hashStop:
uint256 hashStop
,uint256 的实例class
在这种情况下,什么对我来说很重要?
查看 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
对象。所以,长话短说:用流.
中的字节填充locator
和hashStop
对象
我有这行 C++ 代码,但不知道移位运算符的作用:
vRecv >> locator >> hashStop
标识符有以下类型:
- vRecv:
CDataStream CNetMessage::vRecv
,CDataStream class 和 CNetMessage public 属性的实例 class - 定位器:
CBlockLocator locator
,CBlockLocator 结构的实例 - hashStop:
uint256 hashStop
,uint256 的实例class
在这种情况下,什么对我来说很重要?
查看 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
对象。所以,长话短说:用流.
locator
和hashStop
对象