154得票5回答
C++11中的unique_ptr和shared_ptr能相互转换吗?

C++11标准库是否提供将std::shared_ptr转换为std::unique_ptr,或者将std::unique_ptr转换为std::shared_ptr的实用工具?这个操作安全吗?

148得票3回答
std::shared_ptr在多大程度上确保线程安全?

我正在阅读http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html,但有些线程安全问题对我来说还不太清楚: 标准保证引用计数是线程安全的,并且与平台无关,对吗? 类似的问题 - 标准保证只有一个线程(持有最后一个引用)会调...

144得票2回答
std::shared_ptr of this

我目前正在学习如何使用智能指针。然而在进行一些实验时,我发现了以下情况,但我找不到一个令人满意的解决方案: 假设你有一个A类对象作为一个B类对象(子对象)的父对象,但两者都应该相互知道:class A; class B; class A { public: void addChil...

143得票4回答
将shared_ptr<Derived>作为shared_ptr<Base>传递

如何将派生类型的shared_ptr传递给接受基础类型shared_ptr的函数,这是最佳方法? 通常我通过引用传递shared_ptr以避免不必要的复制:int foo(const shared_ptr&lt;bar&gt;&amp; ptr); 但是如果我尝试做类似这样的事情,这种方法就不...

142得票3回答
我应该通过引用传递shared_ptr吗?

如何最好地传递shared_ptr? 目前我是这样传递shared_ptr函数参数的:void function1( shared_ptr&lt;TYPE&gt;&amp; value );

138得票6回答
为什么 std::shared_ptr<void> 能够工作?

我在stackoverflow上找到一些使用std::shared_ptr来执行任意清理操作的代码。起初,我认为这段代码不可能正常工作,但是后来我尝试了以下代码:#include &lt;memory&gt; #include &lt;iostream&gt; #include &lt;vec...

123得票2回答
为什么shared_ptr<void>是合法的,而unique_ptr<void>则是不合法的?

问题实际上与标题相符:我很好奇知道这种差异的技术原因,以及背后的逻辑? std::shared_ptr&lt;void&gt; sharedToVoid; // legal; std::unique_ptr&lt;void&gt; uniqueToVoid; // ill-formed;

116得票17回答
C++ - 传递 std::shared_ptr 或 boost::shared_ptr 的引用

如果我有一个需要使用shared_ptr的函数,那么把它传递一个引用而不是复制shared_ptr对象会更有效率,这样做有可能导致什么问题呢?我能想到两种可能的情况: 1)函数内部会对该参数进行复制,例如:ClassA::take_copy_of_sp(boost::shared_ptr&l...

108得票5回答
传递共享指针作为参数

如果我声明了一个被 shared pointer 包装的对象:std::shared_ptr&lt;myClass&gt; myClassObject(new myClass()); 然后我想把它作为一个参数传递给一个方法:DoSomething(myClassObject); //the ...

108得票4回答
shared_ptr在哪里?

我现在非常沮丧,花了几个小时的时间来找寻shared_ptr的位置。我看到的所有示例都没有完整的代码来包括shared_ptr的头文件(并且能够正常工作)。仅仅说出std、tr1和&lt;memory&gt;一点也没有帮助!我已经下载了boost,但它还是没有出现!能否有人告诉我确切的位置在哪...