本文主要是介绍Modern C++ std::unique_ptr的实现原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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(
这篇关于Modern C++ std::unique_ptr的实现原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!