局部变量类插入到地图中,但它可以工作

时间:2016-05-28 08:37:36

标签: c++11

我对本地课程插入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;
    }

}

0 个答案:

没有答案