类定义如下:
#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/