來自http://herbsutter.com/2013/05/22/gotw-5-solution-overriding-virtual-functions/爲什麼使用make_unique調用來初始化unique_ptr?
我們爲什麼要這樣寫:而不是
auto pb = unique_ptr<base>{ make_unique<derived>() };
剛:
auto pb = make_unique<derived>();
我唯一的猜測是,如果我們想auto
,我們需要幫助它推導出正確的類型(這裏爲base
)。
如果是這樣,那麼這對我來說將是非常值得懷疑的優點..鍵入auto
,然後對=
右側型式很多初始化..
我缺少什麼?
呃,爲什麼?因爲你想要第一件事而不是第二件事?它們並不等同。 (檢查'decltype(pb)') –
這裏有一點很清楚,如果你有一個派生的smart_pointer,你不能輕易地將它轉換爲base。因爲不像base * x;並派生* y; 在類型層次結構中沒有關係。 – Alex
只是想知道,會'unique_ptr pb = make_unique ();'更簡單嗎?因爲'auto'的存在並不意味着我們必須使用它。 –
FredericS