Nic*_*ico 5 c++ windows com directx windows-phone-8
我一直在代码中折腾ComPtrs,因为我在这里和那里都需要它们,但我一直在这样做:
HRESULT Material::Initialize(aiMaterial* pMaterial,
Microsoft::WRL::ComPtr<ID3D11Device1> & d3dDevice,
Microsoft::WRL::ComPtr<ID3D11DeviceContext1> & d3dContext)
Run Code Online (Sandbox Code Playgroud)
这是否完全抵消了ComPtr的引用计数优势?我应该只按值传递(否&)吗?
感谢您的阅读
这是完全可以的,并且最好将其作为 const& 传递。
从语义的角度来看,按值传递是可以接受的,但从性能角度来看,按值传递并不那么容易,因为传递值会导致引用计数上下波动,而且两者都是“互锁”操作,会带来严重后果。而我们却没有得到任何回报。
ComPtr 的好处是它允许正确匹配 Release 调用,这太容易搞乱了,即使很容易,它所花费的代码的混乱也是令人不快的。
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |