我有一个有两个构造函数的类:
A::A(int a) and A::A(double a).
这些构造函数初始化不同的成员变量。在第一种情况下,我初始化了一个地图,在第二种情况下,我初始化了一个指针。
第一种情况:
A::A(int a): mymap() {}
第二种情况:
A::A(double a) : mypointer(NULL) {}
我的问题是,当创建使用这两个不同构造函数的两个对象时,调用这个类的析构函数时应该考虑什么?我的意思是按如下方式编写析构函数就足够了: - 我检查 mymap 是否不为空然后删除条目 - 我检查 mypointer 是否不为空然后删除 mypointer。
A::~A(){
if(!mymap.empty()) { delete entries and clear the map}
if(mypointer != NULL) { delete mypointer; mypointer =NULL; }
}
然后,如果我在两个构造函数中初始化两个变量,例如:
A::A(int a): mymap(), mypointer(NULL) {} A::A(double a): mymap(), mypointer(NULL) {}
我的析构函数安全吗?或者我应该删除 if 条件并直接执行删除。