Разница между указателем на указатель и ссылкой на указатель (C++)

У меня есть часть COM-кода, в котором используются указатели интерфейсов. Оригинальный автор кода реализовал функции, возвращающие указатель интерфейса следующим образом:

HRESULT Query ( IN BSTR sQuery, OUT IEnumWbemClassObject* &pEnumerator ); // (1)

вместо традиционного

HRESULT Query ( IN BSTR sQuery, OUT IEnumWbemClassObject** ppEnumerator ); // (2)

Функция (1) вызывается следующим образом:

hRes = Query ( sQuery, pEnumerator ); // (3)

что определенно выглядит неправильно, но работает нормально. Я не уверен, придираюсь ли я к этой строке, потому что параметр out не является указателем на выходную переменную, или потому что в этом подходе есть что-то неправильное.

Есть ли преимущество в использовании ссылки на указатель вместо указателя на указатель для параметров out?

6
задан Cheers and hth. - Alf 7 December 2011 в 23:32
поделиться