可能重复:
What legitimate reasons exist to overload the unary operator& ?
我刚读过this question,我不禁想知道:
为什么有人可能想要重载&
(“address-of”)运算符?
some_class* operator&() const { return address_of_object; }
是否有合法用例?
答案 0 :(得分:24)
如果您正在处理任何类型的包装器对象,您可能希望或需要透明地将对包装器的访问转发给包含的对象。在这种情况下,您不能返回指向包装器的指针,但需要重载address-of运算符以返回指向包含对象的指针。
答案 1 :(得分:8)
因为他们是邪恶的,希望你受苦。
或者我猜你是否在使用代理对象?我假设你可能想要返回一个指向托管对象而不是容器的指针 - 尽管我宁愿用getter函数来做。否则你必须记得使用像boost::addressof
这样的东西。
答案 2 :(得分:8)
是的,对于调试(如果要跟踪任何访问或引用,您可能希望在对&
,*
或->
)的任何调用中添加日志。< / p>
答案 3 :(得分:0)
我已经在生产代码中看到了这一点。
但是,返回了struct
内容的二进制表示,而不只是0
。
用例很简单:二进制操作。