我有一点使用接口指针的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。, –
嗯,对不起,通过修正标题和最后一段,最初称为“指针参考”来搞乱队列中的答案。 –