C++ - 指针传递问题

Yip*_*Yay 3 c++ parameter-passing shared-ptr

有人对如何boost::shared_ptr通过价值或参考传递任何理想.

在我的平台(32位)sizeof(shared_ptr)等于8个字节,看起来我应该通过引用传递它们,但也许有人有另一个意见/做了一个配置文件/类似的东西?

jal*_*alf 5

在C++中,根据对象的大小选择是否传递值或引用通常是个坏主意.

部分原因是编译器通常会在按值传递时执行复制省略,从而否定复制值的成本,但主要是因为这两个选项的行为通常不同.

因此,选择最能表达您需要做的选项.

使用a shared_ptr,其存在的全部原因是它可以被复制,以便多个对象可以共享指向对象的所有权.如果你从未传递过shared_ptr值,你可以开始想知道为什么它是一个 shared_ptr.那么A scoped_ptr可能是更有效的解决方案.

很显然,这并不是说你应该总是传递shared_ptr由值的两种.只是按值传递是他们的常见用例.

如果您需要调用者和被调用者拥有共享所有权,请按值传递.如果您不希望被调用者拥有任何所有权,请通过引用传递.