c++ - 坚持理解以下 shared_ptr 的初始化方式

标签 c++ shared-ptr smart-pointers

类定义如下:

#include<memory>
using namespace std;
class A
{
public:
    A(int n) : data{new int[n],default_delete<int[]>()}{}
    shared_ptr<int> data;
};

那么怎么理解data{new int[n],default_delete<int[]>()} .初始化方式data{}对我来说很奇怪,因为我不熟悉 C++11。据我了解,这种方式是否意味着让data首先指向连续的堆内存然后定义释放此内存的方式为delete int[]而不是 delete int

最佳答案

您只需使用一个 std::shared_ptr 的 构造函数(参见 here ):

template< class Y, class Deleter > 
shared_ptr( Y* ptr, Deleter d );

其中 default_delete 具有数组特化(参见 here )。

关于c++ - 坚持理解以下 shared_ptr 的初始化方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48416832/

相关文章:

c++ - 类层次结构中所有对象的 shared_ptr 的静态 vector

iphone - 自动 C++ 内存/对象实例管理?智能指针?

c++ - 懒惰地重新创建其资源的智能指针

c++ - 寻找对我的读者/作家实现的批评

c++ - 自制删除如果是空间

c++ - 通过 make_shared 用 shared_ptr 包装动态数组

c++ - 初始化指向类实例的智能指针并访问其方法

C++ 编程 ... 卡在 if..else if... 条件上

c++ - const 双指针参数的非常量指针参数

c++ - 是否可以进行只读复制(通过引用)shared_ptr?