考虑以下向量:
std::vector<std::shared_ptr<X>> myVector;
以下是两个将给定元素添加到向量中的函数:
void foo1(std::shared_ptr<X> x)
{
myVector.push_back(x);
}
void foo2(const std::shared_ptr<X>& x)
{
myVector.push_back(x);
}
我的理解是,两个函数都将一个shared_ptr
推入到X
的向量中,从而增加了X
的引用计数。第一个函数导致引用计数多增加和减少一次,但这是不必要的。
我的理解正确吗?因此第二个选项更可取吗?
foo1
中。 - 101010