好的,所以我对复制和交换习语很感兴趣,我想我主要知道如何实现它。
但是,或者代码库使用MFC 的 CString 类作为字符串,这不会改变。
既然swap
必须(应该???)不是抛出,我不能做
std::swap(this->my_cstring, rhs.my_cstring);
因为这将创建一个可能抛出的临时 CString 对象。(加上它的低效。)
那我还剩下哪里?我应该添加一个try-catch吗?我真的应该允许这种(嗯,非常罕见的)内存不足的情况引发异常并使交换失败吗?
查看 CStrings 实现,似乎没有允许交换的成员或函数......