是否有必要为" string"调用析构函数。对象析构函数中的成员?

时间:2015-01-05 15:52:23

标签: 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_;
};

当我实现desturctor时,我是否必须明确调用析构函数 Sender _ & 文字_ ?或者在我编写时默认析构函数隐式调用它们(没有明确地实现~Message()):

delete pMessage; //pointer to Message object

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

Message::~Message(){
    delete Sender_;
    delete Text_;
}

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

我理解(如果我错了,请纠正我): 当调用default-destructor时,它会为每个成员调用析构函数:

  • 到已实施的,如果存在,
  • 如果
  • 不存在,则
  • 为默认值。

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

感谢。

1 个答案:

答案 0 :(得分:8)

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

您只对使用new分配的内存负责,然后才能使用delete