c++ - Shift operator usage in terms of classes -
i have line of c++ code , don't know shift operator does:
vrecv >> locator >> hashstop
identifiers of following types:
- vrecv:
cdatastream cnetmessage::vrecv
, instance of cdatastream class , public attribute of cnetmessage class - locator:
cblocklocator locator
, instance of cblocklocator struct - hashstop:
uint256 hashstop
, instance of uint256 class
what important me know, in case?
take @ bitcoin documentation. vrecv
instance of cdatastream
overloads operator>> read , unserialize data.
background
to understand expression, precedence , associativity of operators important. in c++, >>
operator left-associative, means can rewrite expression
(vrecv >> locator) >> hashstop; // or in terms of actual function calls... ( vrecv.operator>>(locator) ).operator>>(hashstop);
interpretation
looking @ code operator>> see method takes argument of type t
, returns reference itself. in particular case, argument instance of cblocklocator (a stl vector of uint256 elements). notice operator>>
calls unserialize reads bytes stream.
thus
(vrecv >> locator)
reads bytes vrecv
stream locator
object, returns same stream meaning next executed
vrecv >> hashstop
which advances stream read bytes hashstop
object. so, long story short: fill locator
, hashstop
objects bytes stream.
Comments
Post a Comment