所以我得擁有一個指向實際執行書面級的輸出流類,我需要一個拷貝構造函數,這樣我可以從一個函數返回初始化的實例,這樣我可以透明地結合特定值的用戶。爲了有合理的複製語義,我真的很想清除複製對象中的寫入器指針,並關閉它,使其在複製過程中不可用。複製構造函數中const_cast的含義?
我能做到這一點就好了非常拷貝構造函數,一拉:
class Test {
public:
Test(Test& other);
};
但我希望能夠直接從臨時通過函數調用返回分配:
Test test = make_test();
拷貝構造函數需要爲const。所以我很好奇在複製構造函數中使用const_cast的含義。我會將另一個引用強制轉換爲非const指針,並清除我提到的寫指針。我知道const_cast通常被認爲是邪惡的,但它可以在這種情況下工作嗎?我特別好奇它將如何與函數調用返回的臨時對象進行交互。
或者只有四個創建函數,我真的想訪問複製構造函數,如果有一個合理的方法來限制它,以便它只能用於這些函數(包括它們的返回值),那麼我' d更喜歡這一點。
理想情況下,用戶將永遠無法複製這些對象,但情況需要我不這樣做。我打算明確指出,複製對象會使源對象無效,並在用戶嘗試寫入舊對象時通過異常系統非常清楚地通知用戶。我絞盡腦汁地圍繞着如何構建這個正確的方向,但是這個方案需要最少的妥協。感謝保證它在技術上沒有道德上的問題;) – 2010-07-04 03:25:23