我有以下問題:我可以爲常量和非常量實例寫不同的copyCtor嗎?
我有一個類,它應該這樣做:
Obj o;
Obj o1(o), o1=o; // deep-copies
const Obj c(o), c=o; // deep-copies
const Obj c1(c), c1=c; // shallow-copies
Obj o2(c), o2=c; // deep-copies
我怎樣才能做到這一點最好不繼承? (我的意思是我會做Const_obj
從Obj
繼承除外。)
編輯:
直接使用o.clone()
是不是一種選擇,因爲這樣我可以很容易地通過意外不克隆引入錯誤。
編輯:
最後,有一個適當的,完全與惰性求使用想法從有效C++溶液通過斯科特邁爾斯。看看下面的答案。
我想你可能需要添加一個clone()方法並且明確地做你想做的事情。 – Caribou
這就是我想避免不寫幾乎不可追蹤的錯誤到我的代碼。這很容易。 –
嗯,我認爲這樣做是非常危險的 - 特別是在你移動工作並且有新的進來之後...(我的2個penneth) – Caribou