实现限制为 3 个指针的引用计数器



>**更新添加了主和猫

大家好,我正在创建一个具有引用计数器的共享指针类。

试图做的是当我创建一个新对象并赋予它价值时,我可以这样做,直到我达到 3 的上限。

如果我

再创建对象,如果我尝试使用 obj.getPointer(),它们将获得 NULL。

目前,当我尝试创建对象时,当我控制台记录我的主要:(时,我会0x22bd730

如果要限制为 3 个引用,则在达到限制后,复制构造函数和赋值应正确操作,如下所示:

sharedPTR(const sharedPTR<T>& ref) : myData(nullptr), myRef(nullptr)
{
    if (ref.myRef &&  ref.myRef->getCount() < 3) {
        myData = ref.myData;
        myRef = ref.myRef;
        myRef->AddRef();
    }
}
sharedPTR<T>& operator = (const sharedPTR<T>& ref)
{
    if (this == &ref) {
        return *this;
    }
    if (myRef && myRef->Release() == 0)
    {
        delete myData;
        delete myRef;
    }
    myData = nullptr;
    myRef = nullptr;
    if (ref.myRef && ref.myRef->getCount() < 3) {
        myData = ref.myData;
        myRef = ref.myRef;
        myRef->AddRef();
    }
    return *this;
}

演示

最新更新