Implement simple smart pointers without reference counting

#include <iostream>
#include <memory>
using namespace std;



template<typename T>
class CSmartPtr
{
public:
    CSmartPtr(T *ptr = nullptr):mptr(ptr)
    {
    }
    ~CSmartPtr()
    {
        delete mptr;
        mptr=nullptr;
    }
    T& operator * () {return *mptr;}
    T* operator -> () {return mptr;}
    
private:
    T *mptr;
};
int main()
{

    CSmartPtr<int> ptr1(new int);
    CSmartPtr<int> ptr2(ptr1);
    *ptr2=10;
    CSmartPtr<int> p3=ptr1;
    cout<<*p3;
    
    return 0;
}

 

Guess you like

Origin blog.csdn.net/qq_44132777/article/details/114592375