取消引用指针的地址

Address of de-referenced pointer?

本文关键字:地址 指针 引用 取消      更新时间:2023-10-16

我正在处理其他人正在工作的代码(Qt桌面应用程序),发现了这个:

connect( &*mpMainWin, SIGNAL(whatever()), this, SLOT(whatever()) ));

我理解&*mpMainWin部分有一些困难。据我所知,它返回被取消引用的指针mpMainWin的地址。

但是mpMainWin已经拥有该地址,所以直接将其作为参数应该会得到相同的结果。

所以,如果我没有遗漏任何东西,而且我的逻辑是正确的,那么做这样的事情的原因是什么?如果有,我们应该在什么时候使用这种语法?

这可以用作将智能指针(即不是真正的指针,而是实现operator*()的类)转换为普通指针的技巧。如果不了解mpMainWin是如何声明的,就无法判断这里是否是这样。如果mpMainWin是一个以yes开头的纯指针,那么&*mpMainWinmpMainWin相同。