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++ - make shared_ptr不使用delete

在我的代码中,我想boost:: shared_ptr不要调用delete但是调用ptr-> deleteMe()代替。 我还有一些C风格的函数返回一个ptr。 我可以调用lib_freeXYZ(ptr); 而不是试图删除?…


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

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


c++ - boost make_shared接受一个const引用。 有办法解决这个问题吗?

我在我的程序中使用boost共享指针,我有一个类作为参数引用另一个对象。 我遇到的问题是make_shared函数要求所有参数都是一个const引用,如果我的类的构造函数不允许传入const引用参数,我会得到编译错误。 有谁知道这背后的原因? 另外,有什么办法可以解决这个问题吗? 什么给我带来问题的代码示例: class Object{public: Object(int&…


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

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



c++ - 从shared_ptr中分离指针?

可能重复: 如何从boost:: shared_ptr释放指针? 我的接口函数返回一个指向对象的指针。 用户应该拥有该对象的所有权。 我不想返回Boost.shared_ptr,因为我不想强制客户端使用boost。 但是,在内部,我想将指针存储在shared_ptr中以防止在异常等情况下发生内存泄漏。似乎无法从共享指针中分离指针。 这里有什么想法?…


C++智能指针const正确性

我在类中有一些容器,例如vector或map,它包含生活在堆上的对象的shared_ptr。 例如 template<typename T> class MyExample{public: private: vector<tr1::shared_ptr<T>>vec; map<tr1::shared_ptr<T>,int> h;}; 我希望有一个这个类的公共接口,有时会…


c++ - 我可以用一个私有的构造函数使用boost:: make_shared吗?

考虑以下: class DirectoryIterator; namespace detail{class FileDataProxy; class DirectoryIteratorImpl{friend class DirectoryIterator; friend class FileDataProxy;…




shared_ptr reset shared_ptr头文件 get std shared_ptr用法 shared_ptr初始化 make_shared shared_ptr实现 weak_ptr