我创建了一个类:
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_;
};
当我实现析构函数时,是否必须显式调用 Sender_ 和 Text_ 的析构函数?或者它们是在我编写时被默认析构函数隐式调用的(没有显式实现 ~Message()
):
delete pMessage; //pointer to Message object
无论如何,我是这样实现析构函数的:
Message::~Message(){
delete Sender_;
delete Text_;
}
可以吗?在这种情况下,我应该指望默认析构函数吗?
我明白了(如有错误请指正): 当调用默认析构函数时,它会为每个成员调用一个析构函数:
- 一个已实现的,如果存在的话,
- 如果不存在,则为默认值。
如果我没有做对,如果有人能向我解释,我将不胜感激。
最佳答案
不,你不需要。 (而且你不能!)
您只对使用new
分配的内存负责,只有那时您才应该使用delete
。
关于c++ - 对象析构函数中 "string"成员是否需要调用析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27783021/