48得票6回答
C++智能指针的常量正确性

我在一个类中有几个容器,比如vector或map,它们包含着指向位于堆上的对象的shared_ptr。 例如:template <typename T> class MyExample { public: private: vector<shared_ptr&lt...

48得票5回答
共享指针是如何工作的?

共享指针如何知道有多少个指针指向该对象?(在这种情况下为shared_ptr)

47得票13回答
在构造函数中应该(不应该)做什么?

我想请问您在C ++中构造函数的最佳实践。 我不太确定在构造函数中应该做什么,不应该做什么。 我只应该将其用于属性初始化、调用父级构造函数等吗?还是可能将更复杂的功能放入其中,例如读取和解析配置数据,设置外部库等。 或者我应该为此编写特殊函数?即 init() / cleanup()? ...

47得票1回答
boost::shared_ptr和std::shared_ptr的共存问题

我希望在某个时候使用 boost::log,但是我无法将 std::shared_ptr 作为参数传递,因为编译器(VS2010)不能将其转换为 boost::shared_ptr。 我不太喜欢它们彼此之间是外来的事实。 是否有一种安全和透明的方法将它们相互转换,以便它们不会互相干扰? ...

47得票1回答
如何高效地检查两个std::weak_ptr指针是否指向同一个对象?

我想要比较两个std::weak_ptr或一个std::weak_ptr和一个std::shared_ptr是否相等。 我想要知道的是,这两个weak_ptr/shared_ptr所指向的对象是否相同。 比较结果应该是负的,不仅当地址不匹配时,还应该在底层对象被删除后,通过偶然的方式重新构造...

46得票2回答
使用成员函数作为自定义删除器与std::shared_ptr一起存在的问题

我正在尝试使用std::shared_ptr和自定义删除器。具体来说,我正在将其与SDL_Surface一起使用,如下所示:std::shared_ptr<SDL_Surface>(SDL_LoadBMP(....),SDL_FreeSurface); 编译和运行都没有问题。然而,...

46得票4回答
提升(boost)、共享指针(shared ptr)和弱指针(weak ptr)?什么时候使用哪一个?

在我的当前项目中,我广泛使用了boost::shared_ptr。 最近,我的团队成员也开始使用weak_ptr。我不知道应该在什么情况下选择哪个。 除此之外,如果我想将weak_ptr转换为shared_ptr,我该怎么做?通过对weak_ptr进行锁定以创建shared_ptr会影响到...

45得票4回答
如何有意地删除boost::shared_ptr?

我有许多boost::shared_ptr<MyClass>对象,某个时刻我有意删除其中的一些以释放一些内存。(此时我知道我将不再需要指向的MyClass对象。)我该怎么做? 我猜不能只使用get()获取裸指针并调用delete()。 我在boost::shared_ptr中看...

45得票3回答
在std::shared_ptr上使用.reset()会删除所有实例吗?

我对shared_ptr还不熟悉,正在尝试弄清楚.reset()函数的确切功能。#include <memory> #include <stdio> using namespace std; class SomeClass{}; int main() { s...

44得票3回答
unique_ptr的静态指针转换替代方法

我了解使用unique_ptr和static_pointer_cast会导致所包含数据的共享所有权。 换句话说,我的意图是: 我理解使用unique_ptr和static_pointer_cast会导致所包含数据的共享所有权。 换言之,我想要做的是:unique_ptr<Base&gt...