我正在处理其他人的代码(Qt桌面应用程序),并发现了这个:
connect( &*mpMainWin, SIGNAL(whatever()), this, SLOT(whatever()) ));
我很难理解&*mpMainWin
部分。据我所知,它会返回指向取消引用的指针mpMainWin
的地址。
但是mpMainWin
已经拥有该地址,因此直接将其作为参数赋予应该具有相同的结果。
所以,如果我没有遗漏任何东西而且我的逻辑是正确的,那么做这样的事情的原因是什么?如果有的话我们应该何时使用这种语法?
答案 0 :(得分:9)
这可以用作将智能指针(即,实际上不是指针,实现operator*()
的类)转换为普通指针的技巧。在没有看到如何宣布mpMainWin
的情况下,不可能说这是否是这种情况。如果mpMainWin
是一个开头的普通指针,那么是&*mpMainWin
与mpMainWin
相同。