str1.LockBuffer(),str2不LockBuffer()再分两种情况
1str1为空,str2不为空
str1=str2;str1将申请一块新的内存吗?
2str1不为空,str2为空
str2=str1;str2将申请一块新的内存吗?
1str1为空,str2不为空
str1=str2;str1将申请一块新的内存吗?
2str1不为空,str2为空
str2=str1;str2将申请一块新的内存吗?
CString sSrc,sDest;sDest=sSrc
简单地说,LockBuffer之后,CString里的引用记数就变成-1,CString通过引用记数的优化功能失效。
具体(参考CSimpleStringT::operator==):
sDest若LockBuffer,则不用再考察sSrc的Lock属性,因为可以肯定优化功能已失效,
常规处理。sSrc没有LockBuffer,则需要再考察sSrc的Lock属性,两种情况1常规处理(Lock)2优化处理(UnLock)