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