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