make-shared相关内容
考虑以下事项: class DirectoryIterator;命名空间细节{类 FileDataProxy;类 DirectoryIteratorImpl{友元类 DirectoryIterator;友元类 FileDataProxy;WIN32_FIND_DATAW 当前数据;处理 hFind;std::wstring 根;DirectoryIteratorImpl();显式 Directo
..
为了规避对部分提供的显式模板参数的限制,我嵌入了我想从中推导出类模板参数 (Internal) 到第二个结构 (Container) 的结构. 我想让代码的用户能够创建例如结果类型的共享指针.通过在结构中编写我自己的 create 函数,这工作得很好. #include ///用于部分指定模板参数的容器模板结构容器{///包含类型,其中推导出模板参数.模板 结构内部{显式内部
..
我是智能指针的新手,我正在努力解决每一个绊脚石. 我有一个结构texture_t: struct texture_t{hash32_t 哈希;uint32_t 宽度;uint32_t 高度;uint32_t 句柄;}; 当我尝试使用此行创建此结构的 shared_ptr 时: auto texture_shared_ptr = std::make_shared(new texture_
..
我知道我可以通过将类的 operator new 设为私有来防止自定义类及其后代的普通堆分配,但是有什么方法可以防止库的用户调用 std::自定义类(或其后代)上的:: make_shared ?显然,仅在类中将 operator new 设置为私有并不能阻止它. 请注意,我不想完全阻止以任何方式创建共享指针,因为我打算仍然能够通过调用静态方法来为自定义类生成 std :: shared_p
..
使用gcc 4.6.2,如果构造函数引发异常,make_shared()会给出无用的回溯(显然是由于重新抛出).我正在使用make_shared()节省一些键入内容,但这是show stopper.我创建了一个替代 make_shrd(),它可以进行正常的回溯.我正在使用gdb 7.3.1. 我担心: make_shared()下不好的回溯是我自己的错 我的替代品make_shrd(
..
为了规避对部分提供的显式模板参数的限制,我嵌入了我要从中推断类模板参数( Internal )到第二个结构( Container )的结构. 我想让代码的用户创建例如共享结果类型的指针.通过在结构中编写我自己的 create 函数,效果很好. #include///用于部分指定模板参数的容器模板结构容器{///包含的类型,可推导其模板参数.模板
..
我正在尝试使用std :: make_shared 示例: //标头 A类 { public: std :: shared_ptr createB(); } B类 { private: std :: shared_ptr一种; 公共: B(std :: shared_ptr); } //源 std :: sh
..
考虑此代码: #include #include class SomeClass { public: SomeClass(){ std :: cout
..
我有一个模板参数为T的类模板Templ,而Templ类具有类型为T的数据成员,称为obj。我写了一个可变参数的构造函数模板,该参数将参数转发给obj的构造函数: template class Templ { public: template显式的Templ(Args& ... args) :obj(std :: forwar
..
据我了解, make_shared(...)可以提供一些内存分配优化(它可以在与T类实例相同的内存块中分配引用计数器) enable_shared_from_this是否提供相同的优化?因此: class T:std :: enable_shared_from_this {}; ... auto t = std :: shared_ptr(新T);
..
(使用Visual Studio 2010)我正在尝试在项目中创建一个现有类的shared_ptr(该类是在std :: shared_ptr存在十年之前编写的)。此类使用非常量指针指向另一个对象,它的空参数构造函数是私有的。 class Foobar { 公众: Foobar(Baz * rBaz); 私人: Foobar(); } 当我尝试为其创建一个sh
..
从C ++ 11开始,由于多种原因,开发人员倾向于将智能指针类用于动态生命周期对象。对于这些新的智能指针类,标准甚至建议不要使用 new 这样的运算符,而是建议使用 make_shared 或 make_unique 可以避免某些错误。 如果我们想使用智能指针类,例如 shared_ptr ,我们可以构造一个类似的 shared_ptr p(新int(12));
..
shared_ptr的控制块在存在至少一个weak_ptr时保持活动状态.如果共享指针是用make_shared创建的,则意味着该对象的整个内存将保持分配状态. (对象本身已被适当地破坏,但是由于对象的控制块和内存是像make_shared一样分配在一个块中的,因此只能将它们一起释放.) 我的理解正确吗? 例如,著名的缓存示例" .对象的内存将永远保持分配状态. 在任何实际情况下
..
我必须通过boost::shared_ptr: boost::shared_ptr pProfile = boost::make_shared(); 是protobuf的指针,指向protobuf的函数oPerson.set_allocated_profile(pPro
..
我碰到了这篇帖子,其中一篇@kerek SB州的答案 std::shared_ptr p1 = std::make_shared("foo"); std::shared_ptr p2(new Object("foo")); 在您的代码中,第二个变量只是一个裸指针,而不是 完全共享指针. 现在在肉上. make_shared(在实践中)
..
在 cppref 中,以下内容一直适用到C ++ 17: 代码(例如f(std::shared_ptr(new int(42)), g()))可能会导致 如果g在new int(42)之后被调用并引发 例外,而f(std::make_shared(42), g())是安全的,因为 两个函数调用永远不会交错. 我想知道C ++ 17中引入的哪些更改使其不再适用.
..
给定一个抽象接口和从该接口派生的实现,其中构造函数被保护(创建这些对象只能从类工厂获得 - 实现DI模式),如何在工厂函数中使用make_shared ? 例如: class IInterface { public: virtual void Method()= 0; }; class InterfaceImpl:public IInterface { pu
..
这个链接的问题询问 make_shared 函数和 shared_ptr 构造函数是否不同。 / p> 使用make_shared时会发生什么 部分答案是 make_shared 通常会为对象和智能指针控制块在单个分配。 shared_ptr 构造函数使用两个分配。 cppreference 说明构造函数必须这样做,但没有给出任何原因。 为什么?是出于某种原
..
我第一次使用boost :: make_shared创建共享指针指向的对象。主要是因为我们的代码太慢,单个分配真的有助于提高性能。 修复一些内存泄漏“硬手动方式”后,我决定实现一个简单的内存泄漏检测器通过覆盖所有相关类的新运算符,只是为了计数哪些对象仍然活在我们的应用程序中的特定点。我已经实现了几次之前,并惊讶地发现我的代码不再检测到任何对象。 我想我所要做的就是重写“placemen
..
初始化shared_ptr成员变量时: // .h class Customer { public: Customer(); private: std :: shared_ptr something_; } // .cpp Customer(): something_(new OtherClass()) { }
..