可能重複:
Should I pass a shared_ptr by reference?
Passing smart pointers as arguments如何將std :: shared_ptr <Resource>傳遞給函數?
我應該通過值或常量引用傳遞呢?我已經閱讀了許多關於是否通過值或通過常量引用傳遞可複製構造對象的經驗法則。如:
- 通通過恆定參考物體和由值(除功能對象)內建類型
- 傳值除非對象(包括動態存儲器)的大小小於2 *雙尺寸。
您能否解釋這些規則如何適用於std::shared_ptr<Resource>
?我明白這個對象可能非常小,可能是一個指針和一個引用計數器,但它仍然是一個對象。這裏最好的做法是什麼?
啊,是的,對不起,我的壞 – 2012-07-12 06:13:23
我的經驗法則是:當你想要引用語義時通過引用傳遞,當你想要值語義時傳遞值。我認爲他們優於你一直在閱讀的那些。 (他們也更容易記住:P) – 2012-07-12 06:17:21
@RMartinhoFernandes:如何做const引用到那個?我經常閱讀的經驗法則建議,在我基本上對價值語義感興趣(我認爲查詢對象而不改變它)而不是引用語義(我希望修改對象的能力)的情況下,通過const引用傳遞。)或者你剛纔說了一個重言式:「當你想要引用時通過引用傳遞,當你想要值時傳遞值」? – Managu 2012-07-12 06:25:38