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