在析构函数中检查指针不为null

时间:2018-05-28 15:55:02

标签: c++ memory-management destructor move-semantics nullptr

我有移动构造函数的类。移动后,指针变为空。在调用delete之前,我是否必须在析构函数中检查not_null?

class A {
    int *data;
public:
    A(size_t size) : data(new int[size]) {}

    A(A &&rhs) : data(rhs.data) {
        rhs.data = nullptr;
    }

    ~A() {
        if (data) {
            delete [] data;
        }
        //or
        delete [] data;
    }
}

1 个答案:

答案 0 :(得分:3)

不,deletedelete[]都为nullptr定义明确 - 他们什么都不做。