大佬教程收集整理的这篇文章主要介绍了c – 将析构函数添加到std :: list时调用对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
单个实例被添加到列表中,但是由于其dtor(以及其父节点)被调用,所以该对象不能按预期使用.
#include <iostream> #include <list> class Foo { public: Foo() { int breakpoint = 0; } ~Foo() { int breakpoint = 0; } }; int main() { std::list<Foo> li; li.push_BACk(Foo()); }
C中的所有标准STL容器类型通过值获取其项目,因此根据需要进行复制.例如,每当向量需要增长时,矢量中的所有值都可能被复制.
也许你想要在列表中存储指针而不是对象.通过这样做,只有指针被复制而不是对象.但是,通过这样做,您必须确保在完成后删除对象:
for (std::list<Foo*>::iterator it = list.begin(); it != list.end(); ++it) { delete *it; } list.clear();
或者,您可以尝试使用某种“智能指针”类,例如来自Boost库.
以上是大佬教程为你收集整理的c – 将析构函数添加到std :: list时调用对象全部内容,希望文章能够帮你解决c – 将析构函数添加到std :: list时调用对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。