c++ - 为什么shared_ptr有一个显式的构造函数

c++ - 为什么shared_ptr有一个显式的构造函数

我想知道为什么shared_ptr没有隐式的构造函数。 事实并非如此: 为此获取boost:: shared_ptr(我找出原因,但认为这将是一个有趣的问题,无论如何发布。)#include<boost/shared_ptr.hpp>#include<iostream> using namespace boost; using namespace std; void fun(s…


C++-将引用传递给std:: shared_ptr或boost:: shared_ptr

如果我有一个需要使用shared_ptr的函数,将它的引用传递给它会不会更高效(所以为了避免复制shared_ptr对象)? 什么是可能的不良副作用? 我设想了两种可能的情况: 1)函数内部的副本由参数组成,如in ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp){... m_sp_member=sp;…


c++ - 一旦你采用boost的智能指针,是否有任何情况下使用原始指针?

我很好奇,因为我开始采用更多的提升成语,看来是最好的实践,我想知道我的c++在什么时候甚至远远地看起来像c++的昔日,通常在典型的例子和在那些谁没有被引入到“现代C++”?…


c++ - 智能指针+“这个”被认为是有害的?

在使用智能指针(如boost::shared_ptr的C++项目中,使用“ this ”的设计理念是什么? 考虑到: 存储任何智能指针中包含的原始指针供以后使用是很危险的。 你已经放弃了对象删除的控制,并相信智能指针在正确的时间做到这一点。 非静态类成员本质上使用this指针。 这是一个原始指针,不能改变。 如果我将它存储在另一个变量中,或者将它传递给另一个可能存储它的函数,或者将它绑定…


c++ - 从shared_ptr获得正常的ptr?

我有类似shared_ptr<Type> t(makeSomething(), mem_fun(&Type::deleteMe))我现在需要调用需要指向Type的指针的C样式函数。 我如何从shared_ptr获取它?…


c++ - 使用boost:: shared_ptr的NULL指针?

什么相当于以下内容: std::vector<Foo*> vec; vec.push_back(NULL); 在处理boost::shared_ptr ? 它是以下代码吗? std::vector< boost::shared_ptr<Foo>>vec; vec.push_back(boost::shared_ptr<Foo>()); 注意:我可能会推回很多这样的对象。 我应该在某处声…


c++ - 如何启用父和派生的enable_shared_from_this

我有简单的基类和派生类,我希望它们都有shared_from_this() 。 这个简单的方案: class foo:public enable_shared_from_this<foo>{void foo_do_it(){cout<<"foo::do_it\n";}public: virtual function<void()>…



c++ - `enable_shared_from_this`有什么用处?

我在阅读Boost.Asio示例时遇到了enable_shared_from_this,在阅读完文档之后,我仍然因为应该如何正确使用而丢失了文档。 有人可以给我一个例子和/或解释什么时候使用这个类是有道理的。…


c++ - 引用计数智能指针的引用计数如何工作?

换句话说,实现如何跟踪计数? 是否存在一个类似于映射的对象,所有shared_ptr实例都可以访问它们,其key是指针的地址,value是引用的数量? 如果我要实现一个shared_ptr,这是我想到的第一个想法。 在这些引用计数智能指针的情况下是否存在内存泄漏的可能性? 如果是这样,我该如何避免它们?…


c++ - 在dll-interfaces中使用shared_ptr

我的dll中有一个抽象类。 class IBase{protected: virtual ~IBase()=0; public: virtual void f()=0;}; 我想在加载DLL的exe文件中获取IBase 。 第一种方法是创建以下功能 IBase*CreateInterface(); 并在IBase添加虚函数Release…




shared_ptr std reset get make_shared shared_ptr用法 shared_ptr赋值 shared_ptr初始化 header unique_ptr