1. 程式人生 > >c++趣味之shared_ptr額外好處

c++趣味之shared_ptr額外好處

是什麽 obj delete 兩個類 情況 虛析構 () let red

shared_ptr(sp)額外好處是什麽?即使被轉為基類,析構函數也可以正常執行。

已知兩個類

class foo{};

class bar:foo{public:~bar(){}};

先來看不用sp的情況。

bar* obj = new bar();

delete obj;

這樣foo沒有虛析構函數,刪除foo對象時是不會調用到bar對象的析構函數的。

如果用sp,就可以正常析構了。

sp<foo> obj = make_shared<bar>();

c++趣味之shared_ptr額外好處