我有移动构造函数的类。移动后,指针变为空。在调用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;
}
}
答案 0 :(得分:3)
不,delete
和delete[]
都为nullptr
定义明确 - 他们什么都不做。