佚名通过本文主要向大家介绍了智能指针,我的世界智能指针,智能指针原理,auto ptr智能指针,qt 智能指针等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于智能指针的一个问题
描述:
解决方案1:
描述:
CComQIPtr<Class1> pClass1 = ptemp1;
pClass1 = ptemp2;
上面第一句把pClass1 初始化为ptemp1,第二句想把pClass1 的包装的原始指针变为ptemp2,是不是要有detach,和attach 的过程,上面2句这么写会不会有问题
解决方案1:
智能指针就是这个好处,不放心可以跟踪一下看看有没有出问题
解决方案2: 据我了解是不会有问题的
你跟踪调试一下看看
CComPtr(T* lp)
{
if ((p = lp) != NULL)
p->AddRef();
}
T* operator=(T* lp)
{
return (T*)AtlComPtrAssign((IUnknown**)&p, lp);
}
看了这些CComPtr的源代码, 应该没有问题.
ATLINLINE ATLAPI_(IUnknown*) AtlComPtrAssign(IUnknown** pp, IUnknown* lp)
{
if (lp != NULL)
lp->AddRef();
if (*pp)
(*pp)->Release();
*pp = lp;
return lp;
}