是否有必要在对象析构函数中为"字符串"成员调用析构函数?

Day*_*mer 0 c++ string destructor

我创建了一个类:

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_;
};
Run Code Online (Sandbox Code Playgroud)

当我实现desturctor时,我是否必须显式调用Sender_&Text_的析构函数?或者在我编写时默认析构函数隐式调用它们(没有~Message()显式实现):

delete pMessage; //pointer to Message object
Run Code Online (Sandbox Code Playgroud)

无论如何,我实现了这样的析构函数:

Message::~Message(){
    delete Sender_;
    delete Text_;
}
Run Code Online (Sandbox Code Playgroud)

可以吗?在这种情况下,我可能会计算默认的析构函数吗?

我明白了(请纠正我,如果我错了):当一个默认的析构函数被调用,它要求每个成员的析构函数:

  • 如果存在,则执行一个,
  • 如果不存在,则为默认值.

如果我做不对,如果有人能向我解释,我将不胜感激.

谢谢.

Ste*_*and 8

不,你不需要.(你一定不能!)

您只负责分配的内存new,只有这样才能使用delete.