我有一個類,這取決於應用程序的狀態和用戶選項可能並不總是能夠以任何有意義的狀態存在。如何在C++中不存在對象時清除它?
當對象不存在時,清除它的最好方法是什麼?
兩個想法,我認爲到目前爲止,爲什麼我不相信他們是不是答案:
- 智能指針設置爲NULL當對象不存在,這發出了一個明確的這裏沒有對象的消息,但是我已經讀過使用'new'的動態內存分配應該是異常而不是C++中的規則,它也阻止我能夠通過引用來傳入其他函數(因爲指針可能並不總是指向一個對象)。
- 對象中的一個布爾標誌,當它被設置時,會導致調用的任何方法拋出異常。這需要在每種方法中進行檢查,並且感覺像是一種雜食。我也相信最佳實踐是all objects that exist should be valid,我們不應該調用驗證(或類似)函數,因爲對象的存在意味着它已經是有效的並且準備好調用它的方法。
你看過Boost :: Optional嗎? – StevieG