好的,所以我都在copy-and-swap idiom上銷售,我想我主要知道如何實施它。如何交換MFC CString?
但是,或者代碼庫使用MFC's CString class作爲字符串,這是不會改變的。
由於swap
必須的(應???)是拋出異常,我不能做
std::swap(this->my_cstring, rhs.my_cstring);
因爲這將創建一個臨時的CString對象可能拋出。 (加上它效率低下。)
那麼我剩下的地方?我應該添加一個try-catch?我應該真的允許這種(很好,非常罕見)內存不足的情況發生異常並使交換失敗?
看着CStrings實現,它似乎並不有一個成員或功能,可用於交換...
我看不到有理由對內存進行防禦編碼。在你的CString交換中處理它意味着它會彈出其他地方,對吧? –
@Aidan:「處理它」是什麼意思。你不能以100%的異常保存方式交換'CString'。 –
對不起,我的意思是,如果你的交換所遇到的唯一問題是內存不足,就不應該嘗試/捕獲,因爲內存不足會導致你在其他地方崩潰。 –