我有一點使用接口指針的COM代碼。的返回一個接口指針這樣的代碼實現的功能原作者:的指針指針與參考指針之間的區別(C++)
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參數有什麼好處嗎?
你應該明白'T *'和'T&'之間的區別,那麼理解'T'可以是一個指針類型。 – GManNickG
¤在有效程序中,引用不能是空引用。所以它防止錯誤的使用,*假設只使用C++ *簡化了實現。然而,儘管COM設計時考慮了C++用法(COM對象的內存佈局直接是早期Visual C++製作的內存佈局),但COM與語言無關。所以當這個方法在C中被使用時,下面的指針指針就會被顯示出來,並且C客戶端可能會輕鬆地傳遞一個空指針。因此,如果要支持其他語言的用法,則參考不會簡化。但它更清楚。乾杯&hth。, –
嗯,對不起,通過修正標題和最後一段,最初稱爲「指針參考」來搞亂隊列中的答案。 –