我正在工作的其他人(Qt Desktop应用程序)代码发现了以下内容:
connect( &*mpMainWin, SIGNAL(whatever()), this, SLOT(whatever()) ));
我很难理解
&*mpMainWin
部分。据我对指针的了解,它返回被取消引用的指针mpMainWin
的地址。但是
mpMainWin
已经拥有该地址,因此直接将其作为参数给出应该具有相同的结果。因此,如果我什么都没错过,我的逻辑是正确的,那么做这件事的原因是什么呢?如果有一种,我们什么时候应该使用这种语法?
最佳答案
这可以用作将智能指针(即不是真正的指针,是一种实现operator*()
的类)转换为普通指针的技巧。如果不了解mpMainWin
的声明方式,就无法说出是否是这种情况。如果mpMainWin
是开头的普通指针,则yes,&*mpMainWin
与mpMainWin
相同。