既然主要问题已经得到了回答,那么考虑一下 永远不会使用共享指针的几种方式也许是有益的。这是一个小小的思想实验。让我们定义一个共享指针类型 SF = std::shared_ptr<Foo>。为了考虑引用,让我们看看类型 RSF = std::reference_wrapper<T>,而不是传递函数参数。也就是说,如果我们有一个共享的指针 SF p(std::make_shared<Foo>());,那么我们可以通过 RSF w = std::ref(p);创建一个具有值语义的引用包装器。布置到此为止。