Адрес разыменованного указателя? - PullRequest
5 голосов
/ 29 февраля 2012

Я работаю над чужим кодом на работе (приложение Qt Desktop) и нашел это:

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

У меня есть некоторые трудности с пониманием части &*mpMainWin.Насколько я знаю об указателях, он возвращает адрес указателя с обратными ссылками mpMainWin.

Но mpMainWin уже содержит этот адрес, поэтому его непосредственное указание в качестве параметра должно иметь тот же результат.

Так что, если я ничего не упускаю и моя логика верна, то в чем причина такого?и если есть, когда мы должны использовать такой синтаксис?

1 Ответ

9 голосов
/ 29 февраля 2012

Это можно использовать как трюк для преобразования умного указателя (т.е. на самом деле не указателя, а класса, реализующего operator*()) в простой указатель. Не видя, как объявляется mpMainWin, невозможно сказать, так ли это здесь. Если mpMainWin - простой указатель для начала, тогда да, &*mpMainWin - это то же самое, что и mpMainWin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...