&(*similarObject) 和 similarObject 之间的区别?它们不一样吗?

Difference between &(*similarObject) and similarObject? Are they not same?

本文关键字:similarObject 区别 不一样 之间      更新时间:2023-10-16

有人能给我解释一下吗

dynamic_cast<SomeObject *>( &(*similarObject) );

做解引用指针的地址有什么意义?指针本身不就是它的地址吗?

可能是similarObject的类型重载了operator*,所以它返回的东西的地址你要传递给dynamic_cast

&(*x)x 可能不总是相同的东西。例如:

std::map<int, int>::iterator it = v.begin();

那么it&(*it)是两个不同的东西:

  • it的类型为std::map<int, int>::iterator
  • &(*it)的类型为std::pair<int,int>*

它们完全是而不是。类似的事情也可能发生在您的代码片段中。

如果similarObject是一个智能指针,当*被重载时,该技术有时用于获取原始指针的引用。

没有人提到similarObject是左值,而&*similarObject是右值。