C ++-传递对std :: shared_ptr或boost :: shared_ptr的引用
如果我有一个需要使用的函数shared_ptr,将其传递给它引用不是更有效(这样可以避免复制shared_ptr对象)?可能的不良副作用是什么?我设想了两种可能的情况: 1)在函数内部复制参数,例如 ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp) { ... m_sp_member=sp; //This will copy the object, incrementing refcount ... } 2)在函数内部仅使用参数,例如 Class::only_work_with_sp(boost::shared_ptr<foo> &sp) //Again, no copy here { ... sp->do_something(); ... } 在两种情况下,我都看不出有理由boost::shared_ptr<foo>按值传递而不是按引用传递。传递值只会由于复制而“临时”增加引用计数,然后在退出功能范围时减少引用计数。我在俯视什么吗? 为了澄清,在阅读了几个答案之后:我完全同意过早优化的问题,并且我总是尝试先介绍热点,然后再进行热点工作。如果您知道我的意思,我的问题更多是从纯粹的技术代码角度来看。