unique_ptr是一个非常简单的类,没有计数没有原子操作,非常类似纯指针。
它的类定义也非常简单:
它针对数组做了模板偏特化,因为它得支持数组操作比如Arr[i]。
unique_ptr的本质就是std::tuple, 里面第一项为指针指向管理对象,第二项为deleter:是一个函数指针或仿函数,用来删除管理对象。
故unique_ptr的size大小有两种可能:
- 8:默认deleter = default_delete() default_delete是个空struct。
- 16:用户指定了自己的deleter。
最后留下一个小小的例子供大家去验证上面的结论。
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass(int value) : data(value) {
std::cout << "Constructor called. Value: " << data << std::endl;
}
void printData(