【发布时间】:2015-05-02 16:37:06
【问题描述】:
我阅读了《C++ 标准库第二版》一书,发现以下部分:
namespace std {
template <typename T, typename D>
class unique_ptr<T[], D>
{
public:
typedef ... pointer; // may be D::pointer
typedef T element_type;
typedef D deleter_type;
...
};
}
元素类型 T 可能是 void,因此唯一指针拥有一个未指定的对象 类型,就像 void* 一样。另请注意,定义了类型指针,不一定要定义 作为 T*。如果删除器 D 有一个指针 typedef,则将使用此类型。在这种情况下, 模板参数 T 仅具有类型标记的效果,因为没有成员作为 依赖于 T 的类 unique_ptr;一切都取决于指针。 优点是 因此,unique_ptr 可以保存其他智能指针。
读完本节后,我仍然无法理解“一切都取决于指针”的目的。有人可以提供一些示例吗?谢谢。
【问题讨论】:
-
你不明白什么?为什么 API 是根据 typedef 而不是
T*定义的? ...因为它允许根据其他类型定义 API,所以更加灵活。
标签: c++ c++11 unique-ptr