c++学习系列(1)---shared_ptr的实现和代码例子版本0.1
shared_ptr是c++11 提供的一个智能指针。使用时需要引用头文件<memory>;shared_ptr是一个模板类,参考cpp reference https://en.cppreference.com/w/cpp/memory/shared_ptr 需要实现如下接口:
主要实现以上的方法,需要注意的知识点:
1. 对赋值构造函数和拷贝构造函数的区别, 在c++中,拷贝构造函数是声明初始化的时候调用;赋值构造函数是已经完成初始化的对象,被另一个对象用operator = 操作符赋值后,调用的。可以通过以下代码看到区别:
以上代码的执行结果如下:
2、共享指针中的引用计数,需要是一个指针指向的计数对象,这样多个共享指针才能使用一个计数对象,判断是否需要销毁对象。
3、在赋值构造函数时,需要考虑指针赋值给自己的问题;以及指针赋值时,原来的引用计数要--,同时 要判断是否需要删除。
实现的代码见 git:https://github.com/wudafucode/cc/tree/master/shared_ptr
代码只实现了shared_ptr 的基本功能,还需要实现:enable_shared_from_this ,swap,以及make_shared等功能。后面的章节继续介绍实现