我有一个班级,例如
class test{
public:
somedatahere
test();
~test();
private:
string mystring;
}
在这个类中,构造函数在变量mystring中读取文件的内容。我的问题是:
当类破坏时,mystring是否被释放,或者我必须手动释放它?我怎样才能释放mystring?
答案 0 :(得分:7)
由于mystring
是对象的一部分,因此当对象执行时它将超出范围。没有必要“手动”释放它,事实上你不能。
如果mystring
是指向分配了new
(或new[]
)的内存的指针,则会有所不同,那么您必须手动delete
(或{{ 1}})来自你的析构函数。
答案 1 :(得分:5)
你只需要释放你分配的东西。 new
应与delete
匹配,new[]
与delete[]
匹配。
如果你不这样做,那么一个表现良好的课程不应该要求你做另一个。 是的,标准库表现良好。
所以不,你不需要做任何事情。让std::string
实例自行清理。 (当然,按照它的例子,并确保你自己的类做同样的事情)
答案 2 :(得分:1)
假设你的构造函数只是直接分配到mystring
而没有任何其他分配或做一些奇怪的事情,那么它将被析构函数正确释放。