作者:
ko27tye (好滋好滋)
2016-05-28 02:12:20此頁的參用計數class
class U_Ptr{
friend class Hasptr;
int *ip;
size_t use;
U_Ptr(int *p): ip(p), use(1) {}
~U_Ptr() {delete ip;}
};
為什麼這邊會直接delete? delete一個沒用動態配置的物件不是會有問題嗎?
我實際編譯也出問題,拿掉delete那行才通過編譯。
還是說他本來是想寫以下:
class U_Ptr{
friend class Hasptr;
int *ip;
size_t use;
U_Ptr(int *p): ip(new int(*p)), use(1) {}
~U_Ptr() { delete ip; }
};
作者:
EdisonX (卡卡獸)
2016-05-28 03:20:00這節是在講 smart pointer , U_Ptr 只是一個代理 , 只負責最後的回收,且它的 ctor 也是 private,所以只有其friend class Hasptr 可以用它 . 採用的策略是用 Hasptr負責 new U_Ptr , 最後的 delete 交由 U_Ptr 自己做。