Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ unique_ptr如何知道在数组上调用delete[]?_C++ - Fatal编程技术网

C++ unique_ptr如何知道在数组上调用delete[]?

C++ unique_ptr如何知道在数组上调用delete[]?,c++,C++,任何人都可以提供关于unique\u ptr如何在析构函数中选择使用delete和delete[]的见解吗?我想这里有一些有趣的类型特征技巧可以帮助理解。如果你看一下,你会看到有一个模板专门化,它有一个不同的Deleter用于数组 template< class T, class Deleter = std::default_delete<T> > class unique_ptr; template < class T, clas

任何人都可以提供关于
unique\u ptr
如何在析构函数中选择使用
delete
delete[]
的见解吗?我想这里有一些有趣的类型特征技巧可以帮助理解。

如果你看一下,你会看到有一个模板专门化,它有一个不同的
Deleter
用于数组

template<
    class T,
    class Deleter = std::default_delete<T>
> class unique_ptr;

template <
    class T,
    class Deleter
> class unique_ptr<T[], Deleter>;
模板<
T类,
类Deleter=std::default\u delete
>类唯一性\u ptr;
模板<
T类,
类删除器
>类唯一性\u ptr;
正如他们所指出的

std::unique\u ptr有两个版本:

1) 管理单个对象(例如,分配了
new

2) 管理动态分配的对象数组(例如,使用
new[]
分配)


如果您有一个
unique\u ptr
,那么模板专门化就起作用了,它是
T[]
的专门化,它的专门化在这里很重要。