C++ 如何为具有唯一性的类设置析构函数_ptr<;双重[]>;。实例由make_unique()创建

C++ 如何为具有唯一性的类设置析构函数_ptr<;双重[]>;。实例由make_unique()创建,c++,unique-ptr,C++,Unique Ptr,我有一个类,成员变量是std::unique\u ptr。初始化此变量总是通过make_unique(size)完成的。 但我不知道如何为这个成员变量编写析构函数代码 我知道std::unique\u ptr有一个方法get\u deleter(),但是当我查看文档时,它只提供了自定义的delete。我对类似的例子做了一些研究。但是它们都是关于新的className(),而不是make_unique() cpp的版本是c++17 我的代码 class test{ public: tes

我有一个类,成员变量是
std::unique\u ptr
。初始化此变量总是通过
make_unique(size)
完成的。 但我不知道如何为这个成员变量编写析构函数代码

我知道
std::unique\u ptr
有一个方法
get\u deleter()
,但是当我查看文档时,它只提供了自定义的delete。我对类似的例子做了一些研究。但是它们都是关于新的
className()
,而不是
make_unique()

cpp的版本是c++17

我的代码

class test{
public:
     test(int size) : size_{size}, arr_{make_unique<double[]>( size )} {}

     ~test(){
         // how to destroy arr_
     }
private:
    int size_;

    std::unique_ptr<double[]> arr_;
};
类测试{
公众:
测试(int size):大小{size},arr{make_unique(size)}{
~test(){
//如何摧毁arr_
}
私人:
int-size_389;;
std::唯一\u ptr arr\uu;
};
我不知道如何开始。我知道有一个关键字
delete
,但我认为在这种情况下它没有用处

我不知道如何为这个成员变量编写析构函数代码

为了销毁任何成员变量,不需要特别编写任何内容。执行析构函数体后,所有成员对象以及基类对象都将被所有析构函数销毁


无需在析构函数体中执行任何操作,因此隐式生成的析构函数对于类来说就足够了。

完全不要编写析构函数

std::unique_ptr
将正确地为您进行清理,这确实是首先使用
unique_ptr
的要点


只要可能,请遵循:正确使用智能指针和容器,不要声明任何析构函数、复制构造函数、移动构造函数、复制赋值或移动赋值。(有关主要异常的讨论,请参阅链接,声明接口的析构函数为虚拟,并删除或默认其余部分。)

默认设置很好:-)您无事可做。所以“~test()=default;”应该足够了?所以“~test()=default;”应该足够了?甚至不要键入太多。如果这样做,将禁用move构造函数和move赋值运算符的自动声明,这对该类很有用。如果您真的想明确说明这一点,那么您需要定义所有三个:
~test()=default;测试(测试&&)=默认值;测试与运算符=(测试与)=默认值