析构函数中的多个删除

hel*_*llo 0 c++ arrays destructor

如果我有两个动态数组作为私有数据成员:

std::string* first_array;
std::string* second_array;
Run Code Online (Sandbox Code Playgroud)

我知道我可以在析构函数中删除这样的东西

myClass::~myClass()
{
   delete[] first_array;
   delete[] second_array;
}
Run Code Online (Sandbox Code Playgroud)

我关心的是这个,并不是所有的时间我都有数据在这两个数组中,所以这样的事情被认为是最佳实践吗?

myClass::~myClass()
{
   if(first_array)
       delete[] first_array;
   if(second_array)
       delete[] second_array;
}
Run Code Online (Sandbox Code Playgroud)

我试过这两个并且它都工作,不确定哪个在性能方面更好.

Cap*_*ous 6

C++标准指定调用delete空指针值将导致NOP(无操作).它是完全有效的,可接受的,并且通常是首选的.