我正在工作的其他人(Qt Desktop应用程序)代码发现了以下内容:

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

我很难理解&*mpMainWin部分。据我对指针的了解,它返回被取消引用的指针mpMainWin的地址。

但是mpMainWin已经拥有该地址,因此直接将其作为参数给出应该具有相同的结果。

因此,如果我什么都没错过,我的逻辑是正确的,那么做这件事的原因是什么呢?如果有一种,我们什么时候应该使用这种语法?

最佳答案

这可以用作将智能指针(即不是真正的指针,是一种实现operator*()的类)转换为普通指针的技巧。如果不了解mpMainWin的声明方式,就无法说出是否是这种情况。如果mpMainWin是开头的普通指针,则yes,&*mpMainWinmpMainWin相同。

10-05 21:08