Possible Duplicate:
What legitimate reasons exist to overload the unary operator& ?
I just read this question, and I can't help but wonder:
Why would anyone possibly want to overload the &
("address-of") operator?
some_class* operator&() const { return address_of_object; }
Is there any legitimate use case?
If you're dealing with any sort of wrapper objects, you might want or need to transparently forward the access to the wrapper to the contained object. In that case, you can't return a pointer to the wrapper, but need to overload the address-of operator to return a pointer to the contained object.
Because they're evil and want you to suffer.
Or I guess if you are using proxy objects? I suppose you might want to return a pointer to the managed object instead of the container - although i'd rather do that with a getter function. Otherwise you'd have to remember to use things like boost::addressof
.
Yes, for debugging (if you want to trace any access or reference, you might want to put a log line on any call to &
, *
or ->
).
I have seen this in productive code already.
But there, a binary representation of the content of a struct
was returned, not just 0
.
And the usecase was simple: Binary operations.
来源:https://stackoverflow.com/questions/6499502/why-would-anyone-want-to-overload-the-address-of-operator