
但是,或者代码库使用MFC’s CString class作为字符串,这不会改变.
因为交换必须(应该???)不是,我不能这样做
std::swap(this->my_cstring,rhs.my_cstring);
因为那将创建一个可能抛出的临时CString对象. (加上效率低下.)
那么我离开的地方?我应该添加try-catch吗?我是否真的允许这种(很少,非常罕见)内存不足情况引发异常并使交换失败?
看看CStrings的实现,似乎没有允许交换的成员或函数……
解决方法 自答:在更仔细地研究CString之后,看起来由于CString是一个引用计数字符串实现的事实,通过std :: swap交换它实际上是“99%”异常安全,因为所有发生的是一些引用计数增量和减量.
它只有“99%”安全,因为当CString对象IsLocked时,它总是会复制.
总结以上是内存溢出为你收集整理的visual-c – 如何交换MFC CString?全部内容,希望文章能够帮你解决visual-c – 如何交换MFC CString?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)