【发布时间】:2012-08-17 15:07:33
【问题描述】:
据我所知,我应该在析构函数中销毁我用new 创建的所有内容,并关闭打开的文件流和其他流。
但是,我对 C++ 中的其他对象有些怀疑:
std::vector和std::strings:它们会自动销毁吗?-
如果我有类似的东西
std::vector<myClass*>指向类的指针。调用向量析构函数时会发生什么?
它会自动调用myClass的析构函数吗?还是只有向量被销毁,但它包含的所有对象仍然存在于内存中? -
如果我在一个类中有一个指向另一个类的指针会发生什么,比如:
class A { ClassB* B; }并且 A 类在代码中的某个位置被销毁。 B 类也会被销毁,还是指针和 B 类仍然存在于内存中的某个地方?
【问题讨论】:
-
"或者只有向量被销毁,但它包含的所有对象仍然存在于内存中?" - 在这里修正你的想法。
vector<myClass*>所包含的对象是myClass*对象,也就是指针类型的对象。它们在向量被销毁时被销毁,但销毁指针不会影响指针指向的对象。所以向量包含的对象不仍然存在于内存中。想象指针指向的对象“包含在向量中”会妨碍您回答自己的问题:-) -
顺便说一句,您应该使用每个答案下方的
add comment链接来回复他们或要求澄清。不要使用Post Your Answer链接!
标签: c++ destructor