1876得票20回答
何时使用虚析构函数?

我对大部分的对象导向编程(OOP)理论有扎实的了解,但有一件事情经常让我困惑,那就是虚析构函数。 我曾以为无论如何,析构函数都会被调用,并且每个对象都要调用一次。 什么时候需要将析构函数声明为虚函数?为什么需要这样做呢?

394得票8回答
C++中make_shared和普通shared_ptr的区别

std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); 有很多关于这个问题的谷歌和stackov...

369得票10回答
我们应该通过引用还是值传递shared_ptr?

当一个函数接收一个 shared_ptr (来自 boost 或 C++11 STL)时,您应该采用以下哪种方式传递它呢? 通过 const 引用: void foo(const shared_ptr<T>& p) 还是通过值: void foo(shared_ptr&...

364得票15回答
std::weak_ptr在什么情况下有用?

我开始学习C++11的智能指针,但我没有看到std::weak_ptr的任何有用的用途。有人可以告诉我什么时候使用std::weak_ptr是有用/必要的吗?

342得票4回答
unique_ptr和shared_ptr之间的区别

可能的重复问题: pimpl: shared_ptr或unique_ptr 智能指针(boost)解释 有人可以解释一下shared_ptr和unique_ptr之间的区别吗?

246得票19回答
如何在一个只有保护或私有构造函数的类上调用 ::std::make_shared 函数?

我有这段代码不起作用,但我认为意图很清楚: testmakeshared.cpp#include <memory> class A { public: static ::std::shared_ptr<A> create() { return :...

217得票8回答
为什么我要使用std::move移动一个std::shared_ptr?

我一直在查阅Clang源代码,我找到了这个片段: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Val...

210得票2回答
你能让std::shared_ptr管理使用new T[]分配的数组吗?

你能让一个std::shared_ptr指向一个数组吗?例如, std::shared_ptr<int> sp(new int[10]); 如果不行,那为什么呢?我已经意识到的一个原因是无法对std::shared_ptr进行递增/递减操作。因此,它不能像普通指向数组的指针一...

185得票2回答
使用智能指针管理类成员变量

我在理解C++11中将智能指针作为类成员的使用方面遇到了困难。我已经阅读了很多有关智能指针的内容,并且我认为我基本上了解了unique_ptr和shared_ptr/weak_ptr的工作原理。但我不明白的是真正的用法。似乎每个人都建议几乎始终使用unique_ptr。但是,我该如何实现这样的...

158得票4回答
`const shared_ptr<T>`和`shared_ptr<const T>`有什么区别?

我正在为 C++ 中的共享指针编写访问器方法,大意如下:class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr&lt;Bar...