首页 > 解决方案 > 为什么这里不调用析构函数

问题描述

考虑以下代码

vector<myCustomType> v;
for (int i = 0; i != 5; i++)
{
   v.push_back( myCustomType () );
}

我一直在阅读书籍,其中说当对象超出范围时调用析构函数并使用 shared_pointer 或其他内存技巧来防止对象被破坏。

因此,我希望以下代码会使程序崩溃:

v[0]. someMemberFunc ();

但是,这不会发生。事实上,对象并没有被销毁。为什么是这样?

谢谢!

标签: c++

解决方案


v没有超出范围,并保留了它的 5 个myCustomType对象。因此,访问其中一个并在其上调用成员函数非常好。


推荐阅读