c++ - 为什么这里不调用析构函数
问题描述
考虑以下代码
vector<myCustomType> v;
for (int i = 0; i != 5; i++)
{
v.push_back( myCustomType () );
}
我一直在阅读书籍,其中说当对象超出范围时调用析构函数并使用 shared_pointer 或其他内存技巧来防止对象被破坏。
因此,我希望以下代码会使程序崩溃:
v[0]. someMemberFunc ();
但是,这不会发生。事实上,对象并没有被销毁。为什么是这样?
谢谢!
解决方案
v
没有超出范围,并保留了它的 5 个myCustomType
对象。因此,访问其中一个并在其上调用成员函数非常好。
推荐阅读
- math - 衡量内容可重用性的计算
- javascript - 我该如何解决?UnhandledPromiseRejectionWarning
- amazon-web-services - Amazon SNS FilterPolicy 订阅过滤策略 每个账户 200 个含义
- elasticsearch - 无法从错误消息“无法解决”中找到冲突
- powershell - 什么是类似 Assebly::LoadWithPartialName 的 powershell 语法?
- android - 如何使屏幕呈现为 indexedStacked 子项可滚动
- python-3.x - 调用外部函数时的Django“内部服务器错误”和“MultiValueDictKeyError”
- model-view-controller - Rotativa BuildFile 没有击中操作方法
- javascript - 按 ObjectId 过滤的嵌入式 MongoDB 图表不显示
- node.js - nodemon安装报错问题