我所知道的就是 如果沒有把建構子解構子寫在 class外定義,compile會說 incomplete
type 噴error
但我沒有很 明確的 可以說出為什麼
https://wandbox.org/permlink/CrPMjxcQmHmc10z0
vs
https://wandbox.org/permlink/IXggjec3DzkQJlCk
上面的可以過。我只能用結果論推斷 include 在main 後 剛好他也看到了FooImpl的完整
size(雖然再後面才定義,為什麼沒噴eror??) “好像”是因為這樣才可以過. 另一個則
是 main include Foo.h 的時候還沒看到 FooImpl所以建構解構 產生的程式碼會需要com
plete type 所以出問題,但如果這樣講 unique_ptr解構子會有具體呼叫delete ptr的動
作的我可以接受,建構子呢? new是caller new, 裡面應該只是做pointer的assign, 不
該出問題呀 ,但經過實驗 若建構子寫在class 內 也是會壞,為什麼呢
以上可否給我一些更具體的概念?
另一個問題是
我試圖用shared_ptr看有沒有這類問題,曾經看過網路上說也會遇到 , 但我做不出來,
再想是不是跟實作有關,我試圖跳進我的shared_ptr header....奇怪我找不到解構子 [1
], 讓我不知怎麼理解...沒有解構子怎麼讓refcount