我对本地课程插入map
有疑问
为了测试,我在函数中创建了一个没有新增的类,以便范围在本地
然后我将类作为值插入到地图中。
我认为这个类会被破坏,因为类的范围是本地的。
但是它显示了插入的值(在下面的代码中为40)。
操作系统是否对内存进行了延迟删除?我的代码如下
#include <cstdlib>
#include <unordered_map>
#include <iostream>
using namespace std;
class MyClass{
public:
MyClass(int id){m_id = id;};
void PrintThis(){cout << " This is test "<< m_id << endl;};
int m_id;
};
class Test{
public:
unordered_map<int, MyClass> mapTest2;
void TestLocal(){
MyClass mc1(10);
MyClass mc2(20);
MyClass mc3(30);
mapTest2.insert(make_pair(1, mc1));
mapTest2.insert(make_pair(2, mc2));
mapTest2.insert(make_pair(3, mc3));
}
void TestLocal2(){
MyClass mc1(40);
MyClass mc2(50);
MyClass mc3(60);
mapTest2.insert(make_pair(4, mc1));
mapTest2.insert(make_pair(5, mc2));
mapTest2.insert(make_pair(6, mc3));
}
};
int main(){
Test* tt1 = new Test();
tt1->TestLocal();
tt1->TestLocal2();
auto search2 = tt1->mapTest2.find(4);
if(search2 != tt1->mapTest2.end()) {
MyClass mc = search2->second;
cout << mc.m_id << endl;
}else{
cout << "not Found2 " << endl;
}
}