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

Stuck in understanding following initialization way of shared_ptr

一个class定义如下:

#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's 构造函数(参见 here):

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

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