取消引用 std::tr1:shared_ptr 与取消引用裸指针有什么不同吗?
我意识到创建、分配、复制和销毁 std::tr1::shared_ptr 或 boost::shared_ptr (由于引用计数机制)会对性能造成(有时很严重)影响。一旦构造完毕,…
来自 this 的侵入性指针
如何将 this 指针传递给需要 intrusive_ptr 的方法(例如来自 boost 的方法)?对于shared_ptrs,有enable_shared_from_this。…
C++ 中的智能指针
假设我们有一个基类和一个派生类。所以: class base { protected: ~base(){ //... } // ... } class derived : public base { // ... } 现在假设我们…
为什么我无法从函数返回 Boost::Scoped_ptr?
所以我尝试围绕 boost.extension 函数创建一些包装器来创建类。所以我创建了一个函数: template <class BaseClass, class ConstructorType> boos…
这是 intrusive_ptr 的有效使用吗?
在我的代码中,当涉及到 intrusive_ptr 时,我遵循两条规则: 按值传递原始指针意味着保证原始指针在该函数的生命周期内有效。 如果要在函数的生命周…
Boost Shared_ptr:使用unique()实现写时复制
有人可以解释一下 boost shared_ptr 手册 的含义吗: 如果你使用unique()来实现 写时复制,不依赖 存储指针时的特定值 为零。 谢谢。…
使用自定义删除器增强scoped_ptr/scoped_array
我不知道如何让 scoped_ptr 或 scoped_array 使用自定义删除器。也许还有另一种实现允许类似于 shared_ptr 的受控删除? 顺便说一句,为什么 shared_p…
QScopedArrayPointer 保护我的数据,但它仍然泄漏
#include <QScopedArrayPointer> #include <QDebug> #include <stdexcept> class MyData{ public: MyData() { qDebug() << "Construc…
删除指向不完整类型和智能指针的指针
当尝试使用带有前向声明的类型的 auto_ptr 时,如下所示: class A ... std::auto_ptr<A> a A 的析构函数未被调用(显然,因为 auto_ptr< /code…
Boost智能指针:我可以用更简洁的方式表达它吗?
今天我一直在使用 Boost::shared_ptr,我有一个问题。 vector<shared_ptr<KlasaA> > vec vec.push_back(shared_ptr<KlasaA>(new KlasaB))…
当来自“新”的指针出现时,如何跟踪情况?表达式传递给dynamic_cast?
最近我在查看一些旧代码时发现了以下内容: auto_ptr<DerivedClass> pointer = dynamic_cast<CBase*>( new CDerived() ) 除了这个代码在有效…
防止 C++ 中的标头爆炸(或 C++0x)
假设具有如下所示的通用代码: y.hpp: #ifndef Y_HPP #define Y_HPP // LOTS OF FILES INCLUDED template <class T> class Y { public: T z // LO…