97得票4回答
C++11清除shared_ptr时,我应该使用reset还是设置为nullptr?

我对C++11最佳实践有一个问题。当清除一个共享指针时,我应该使用没有参数的reset()函数,还是将shared_ptr设置为nullptr?例如:std::shared_ptr<std::string> foo(new std::string("foo")); foo.rese...

88得票5回答
shared_ptr 和 weak_ptr 有什么区别?

我正在阅读Scott Meyers的《Effective C++》一书。其中提到了tr1::shared_ptr和tr1::weak_ptr像内置指针一样工作,但它们会跟踪有多少个tr1::shared_ptrs指向一个对象。 这被称为引用计数。它在预防非循环数据结构中的资源泄漏方面效果很好...

87得票2回答
C++中,空std::shared_ptr和null std::shared_ptr有什么区别?

cplusplus.com的shared_ptr页面指出了std::shared_ptr的empty和null之间的区别。 cppreference.com没有明确说明这种区别,但在对std::shared_ptr行为的描述中同时使用了“empty”和与nullptr的比较。 shared_...

85得票3回答
如何将std::shared_ptr向下转型?

请考虑: struct SomethingThatsABase { virtual bool IsChildOne() const { return false; } virtual bool IsChildTwo() const { return false; } }; ...

84得票7回答
如何使用 shared_ptr?

你好,我今天在关于如何将不同类型的对象插入到同一个向量数组中的问题上提出了一个问题,我的代码如下: gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate a...

84得票10回答
为什么不能从unique_ptr构造weak_ptr?

如果我理解正确,weak_ptr不会增加所管理对象的引用计数,因此它不表示所有权。它只是让您访问由其他人管理的对象,该对象的生存期由其他人控制。 因此,我不明白为什么可以从shared_ptr构造weak_ptr,但不能从unique_ptr构造。 有人能简要解释一下吗?

79得票2回答
为什么unique_ptr需要两个模板参数,而shared_ptr只需要一个?

unique_ptr 和 shared_ptr 都可以接受自定义的删除器来调用它们所拥有的对象。但是在 unique_ptr 的情况下,删除器作为类的模板参数传递,而 shared_ptr 的自定义删除器类型则需要在构造函数的模板参数中指定。 template <class T, c...

76得票4回答
shared_from_this导致bad_weak_ptr错误

我正在尝试在asio中保持已连接客户端的列表。 我从文档中调整了聊天服务器示例(http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp03/chat/chat_server.cpp),以下是我最终得出的重要部分:...

75得票3回答
std::shared_ptr的初始化:make_shared<Foo>()和shared_ptr<T>(new Foo)的区别。

什么是以下两者之间的区别:std::shared_ptr&lt;int&gt; p = std::shared_ptr&lt;int&gt;( new int ); 以及std::shared_ptr&lt;int&gt; p = std::make_shared&lt; int &gt;()...

74得票4回答
使用boost::shared_ptr和static_cast?

如何使用boost::shared_ptr等效实现static_cast? 换句话说,我需要如何重写下面的代码:Base* b = new Derived(); Derived* d = static_cast&lt;Derived*&gt;(b); 当使用 shared_ptr 时应注意什...