为什么有人想要超载& (地址)运营商?

时间:2011-06-27 22:07:25

标签: c++ operator-overloading overloading address-operator

  

可能重复:
  What legitimate reasons exist to overload the unary operator& ?

我刚读过this question,我不禁想知道:

为什么有人可能想要重载&(“address-of”)运算符?

   some_class* operator&() const { return address_of_object; }

是否有合法用例?

4 个答案:

答案 0 :(得分:24)

如果您正在处理任何类型的包装器对象,您可能希望或需要透明地将对包装器的访问转发给包含的对象。在这种情况下,您不能返回指向包装器的指针,但需要重载address-of运算符以返回指向包含对象的指针。

答案 1 :(得分:8)

因为他们是邪恶的,希望你受苦。

或者我猜你是否在使用代理对象?我假设你可能想要返回一个指向托管对象而不是容器的指针 - 尽管我宁愿用getter函数来做。否则你必须记得使用像boost::addressof这样的东西。

答案 2 :(得分:8)

是的,对于调试(如果要跟踪任何访问或引用,您可能希望在对&*->)的任何调用中添加日志。< / p>

答案 3 :(得分:0)

我已经在生产代码中看到了这一点。

但是,返回了struct内容的二进制表示,而不只是0

用例很简单:二进制操作。