我创建了一个类:是否有必要在对象析构函数中调用“string”成员的析构函数?
class Message {
public:
Message(string sender, string message_text);
Message(string sender);
Message();
~Message();
bool wasRead() const;
void updateWasReadStatus();
void printMessage() const;
private:
string Sender_;
string Text_;
bool wasRead_;
};
当我实现desturctor,我必须显式调用析构函数为Sender_ & Text_?或者,他们含蓄由默认的析构函数调用时我写的(不执行~Message()
明确):
delete pMessage; //pointer to Message object
总之,我实现了这样的析构函数:
Message::~Message(){
delete Sender_;
delete Text_;
}
,可以吗?我应该在这种情况下计算可能的默认析构函数吗?
我明白(请纠正我,如果我错了): 时默认调用析构函数,它要求每个成员析构函数:
- 一个实施一个,如果它存在,
- 如果不存在,则为默认值。
如果我不明白,我会很感激,如果有人能解释给我。
谢谢。
如果您没有使用'new',则不需要调用'delete'。 – Borgleader
在类的析构函数完成后,所有非指针类成员的destuctor自动调用。如果类对象拥有内存,那么任何指针成员都需要被删除(特别是当你在类中使用'new'时)。 – crashmstr
@StephaneRolland修,谢谢。 – Borgleader