Modern C++ std::unique_ptr的实现原理


unique_ptr是一个非常简单的类,没有计数没有原子操作,非常类似纯指针。

它的类定义也非常简单:
Modern C++ std::unique_ptr的实现原理_第1张图片
它针对数组做了模板偏特化,因为它得支持数组操作比如Arr[i]。
unique_ptr的本质就是std::tuple, 里面第一项为指针指向管理对象,第二项为deleter:是一个函数指针或仿函数,用来删除管理对象。
故unique_ptr的size大小有两种可能:

  1. 8:默认deleter = default_delete() default_delete是个空struct。
  2. 16:用户指定了自己的deleter。

最后留下一个小小的例子供大家去验证上面的结论。

#include 
#include 

class MyClass {
   
public:
    MyClass(int value) : data(value) {
   
        std::cout << "Constructor called. Value: " << data << std::endl;
    }

    void printData(

你可能感兴趣的:(modern,C++,c++,开发语言,modern,C++,unique_ptr)