小编sha*_*ron的帖子

析构函数中的删除与删除[]

我在学习 C++ 考试,有人问我在这段代码中,该类的 d'tor 是否应该使用 delete[] 而不是 delete:

    template <class T>
class ClonePtr
{
private:
    T* ptr;
public:
    explicit ClonePtr(T* p = nullptr) : ptr(p) {}
    ~ClonePtr() { if(ptr!=nullptr) delete []ptr; }
    ClonePtr(const ClonePtr& other) : ptr(nullptr)
    {
        *this = other;
    }
    ClonePtr(ClonePtr&& other) : ptr(other.ptr)
    {
        other.ptr = nullptr;
    }
    ClonePtr& operator=(const ClonePtr& other)
    {
        if (this != &other)
        {
            delete ptr;
            if (other.ptr != nullptr)
                ptr = other.ptr->clone();
        }
        return *this;
    }
    T& operator*() const { return *ptr; …
Run Code Online (Sandbox Code Playgroud)

c++ oop

2
推荐指数
1
解决办法
85
查看次数

标签 统计

c++ ×1

oop ×1