实现shared_ptr指针
一般来说,实现一个shared_ptr需要实现这几个操作:
1.构造函数,进行初始化操作。
2.拷贝构造函数,让拷贝的shared_ptr的引用计数进行加一操作
3.重载->操作符,得到对应的对象指针。
4.重载*操作符,得到对应的对象。
5.重载=操作符,需要将赋值符左边的shared_ptr的引用计数进行-1操作,如果左边的引用计数为0的话,则进行销毁。将赋值符右边的进行+1操作。然后将右边的引用计数和对象赋给左边。
6.析构函数,如果当前的引用计数为0的话就调用delete进行销毁,否则引用计数减1.
7.获取引用计数。
4template <typename T>
5 class shared_ptr {
6 public:
7 shared_ptr(T* p) : count(new int(1)), _ptr(p) {