Параметр функции C ++ в качестве ссылки - PullRequest
3 голосов
/ 20 сентября 2010

У меня есть вопрос.Может кто-нибудь сказать мне, почему кто-то объявил бы параметр r таким?

В чем разница между записью & r и записью (& r)?

QDataStream& operator>>(QDataStream &s, Record(&r))
{
}

Спасибо:)

Ответы [ 2 ]

11 голосов
/ 20 сентября 2010

Record(&r) и Record &r - идентичные объявления типов. Я не знаю, почему кто-то включил бы скобки за исключением стилистических соображений. Возможно, это какая-то грязь, оставшаяся от рефакторинга?

0 голосов
/ 21 сентября 2010

Как сказал Ричард, Запись (& r) и Запись & r эквивалентны.Таким образом, важным отличием является то, насколько эффективно они сообщают о намерениях программиста.Я лично предпочитаю Record & r, а не Record & r, потому что мне нравится отделять тип от имени.Тем не менее, я бы избегал Record (& r), потому что он выглядит очень похожим на синтаксис для типов функций.Например, Record (& r) () объявляет r как ссылку на функцию, такую ​​как следующая.

Record f() { }
...