自己写了一个shared_ptr的实现。如有错漏,还望指摘。
(PS:我最近突然在想,是不是应该用锁而不是原子类?因为原子类没办法和指针一起绑定成原子操作。比如:一个线程调用析构函数时,自减引用计数之后,还没来得及释放内存时,如果有另一个线程这个时候获取了指针,是不是就会出问题?)
template<class T>
class MySharedPtr
{
private:
T* ptr = nullptr; //指针
std::atomic_uint* num = nullptr; //引用计数
public:
constexpr MySharedPtr() noexcept {
} //无参构造函数
constexpr MySharedPtr(std::nullptr_t) noexcept {
} //参数为空指针
MySharedPtr(T* p) : ptr(p) {
//有参构造函数
num = new std::