如何使用 unique_ptr<double[]> 为类设置析构函数。该实例是由 make_unique() 创建的

Ath*_*hos 5 c++ unique-ptr

我有一个类,成员变量是std::unique_ptr<double[]>. 初始化该变量始终由 完成make_unique<double[]>(size)。但我不知道如何为这个成员变量编写析构函数代码

我知道std::unique_ptr有一个方法get_deleter(),但是当我查看文档时,它只提供自定义删除。我对类似的例子做了一些研究。但所有这些都是关于新的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_;
};
Run Code Online (Sandbox Code Playgroud)

我不知道如何开始。我知道有一个关键字delete,但我认为在这种情况下它没有用。

asc*_*ler 7

根本不要编写析构函数。

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

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


eer*_*ika 1

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

无需编写任何特定内容即可销毁任何成员变量。在执行析构函数体后,所有成员对象以及基类对象都会被所有析构函数销毁。

不需要在析构函数体内做任何事情,因此隐式生成的析构函数对于该类来说就足够了。