4

我有一堂课,例如

class test{

   public:
      somedatahere
      test();
     ~test();
   private:
       string mystring;

}

在此类中,构造函数读取变量 mystring 中文件的内容。我的问题是:

当类破坏时 mystring 会被释放还是我必须手动释放它?我怎样才能释放 mystring ?

4

3 回答 3

7

由于mystring它是对象的一部分,因此当对象出现时,它将超出范围。没有必要“手动”释放它,事实上你不能。

如果是指向使用(or )mystring分配的内存的指针,这将有所不同,那么您必须从析构函数中手动(or ) 它。newnew[]deletedelete[]

于 2012-11-15T08:48:20.093 回答
5

你只需要释放你分配的东西。new应与 匹配,delete并由new[]匹配delete[]

如果你不做任何一个,那么一个表现良好的班级不应该要求你做另一个。是的,标准库表现良好。

所以不,你不需要做任何事情。让std::string实例自行清理。(当然,按照它的例子,并确保你自己的类也这样做)

于 2012-11-15T08:48:16.217 回答
1

假设您的构造函数只是直接分配到mystring没有任何其他分配或做一些奇怪的事情,那么是的,它将被析构函数正确释放。

于 2012-11-15T08:50:02.143 回答