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等功能。后面的章节继续介绍实现

 

posted on 2020-08-10 23:53  xgcode  阅读(326)  评论(0编辑  收藏  举报