为什么有人想要重载&(地址)运算符? [重复]

问题描述 投票:18回答:4

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

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

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

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

有没有合法的用例?

c++ operator-overloading overloading address-operator
4个回答
24
投票

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


8
投票

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

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


8
投票

是的,对于调试(如果要跟踪任何访问或引用,您可能希望在对&*->的任何调用上放置一个日志行)。


0
投票

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

但在那里,struct内容的二进制表示被返回,而不仅仅是0

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

© www.soinside.com 2019 - 2024. All rights reserved.