的「所有權,源和匯」這site狀態:這兩個關於'auto_ptr`模板類的來源是否存在矛盾?
「當你複製一個auto_ptr
,您將自動從源auto_ptr
所有權轉讓給目標auto_ptr
; 如果目標auto_ptr
已經擁有的對象,該對象首先被釋放。複製後,只有目標auto_ptr
擁有該指針,並將在適當的時候將其刪除,而源被設置爲空狀態,並且不能再用於引用擁有的對象。 」。
現在考慮爲templacte<classX> class auto_ptr
中的operator=()
定義,在第14章,Stroustrup的的C++編程語言第三版的368頁:
auto_ptr& operator=(auto_ptr& a) throw() { ptr = a.ptr; a.ptr = 0; }
我看不到操作釋放對象由ptr
尋址,以防ptr != 0
!
其他可疑:「operator =」沒有返回任何東西。 – Mat 2012-02-20 12:06:50
@sbi C++編程語言第三版 – Belloc 2012-02-20 12:07:57
'ptr'的類型是什麼?那是'classX *'還是'auto_ptr_guts'?如果是後者,上面的代碼將是相當微不足道的。 –
MSalters
2012-02-20 12:20:31