我正在浏览一些处理 Windows 映像组件库的遗留 C++ 代码,我观察到了这一点:
void setProperties(IPropertyBag2* const pBag)
{
pBag->Write(...);
}
void other_function()
{
CComPtr<IPropertyBag2> pBag;
//Code to initialize pBag
setProperties(pBag);
}
该setProperties
方法只是将一堆属性写入属性包。代码编译并运行良好,因为我认为它调用了适当的类型转换运算符。
我的问题是是否推荐这样的接口,或者是否有更好的方法来传递指针。例如,如果将签名更改为:是否有任何区别(在安全/性能方面):
void setProperties(const CComPtr<IPropertyBag2>& pBag)