Paul D. Anderson wrote:
Looking at Don Clugston's BigInt code I see usage of "*this":
BigInt opMulAssign(T: BigInt)(T y) {
*this = mulInternal(*this, y);
return *this;
}
I think I know what it does (passes this by reference) but I can't find any
documentation that explains the usage. Can anyone point me to a source??
Paul
It's passing by value, since BigInt is a struct, not a class. 'this' is
a pointer to the struct, so *this is the struct itself. In the case of
BigInt, the struct only contains an bool and a dynamic array, for a
total of 10 bytes or so, so it's not much bigger than a pointer.
I believe the behaviour of 'this' in structs changed recently (but
probably only in D2?) The BigInt wrapper class would be a bit different
in D2.
BTW BigInt uses structs, not classes, and part of the reason for this is
that you _cannot_ have value semantics with a class.