检查指针在析构函数中不为空
Check pointer is not null in destructor
我有 class 移动构造函数。移动后,指针变为空。在调用 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;
}
}
不,delete
和 delete[]
都是 nullptr
的明确定义 - 它们什么都不做。
我有 class 移动构造函数。移动后,指针变为空。在调用 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;
}
}
不,delete
和 delete[]
都是 nullptr
的明确定义 - 它们什么都不做。