zoukankan      html  css  js  c++  java
  • 引用vector里的元素被删除后,引用会怎么样?

      引用的定义不多说,直接看做变量的别名就可以了。有一天写着写着代码,突然想到,如果对vector里某个元素设置引用后,将这个元素从vector里删除会怎么样?我思考了下,认为那个元素会被删除,但是引用还是会指向原来的内存,也就是说这里可能会出现安全问题。光想是不行的,所以速度写了个小测试:

    #include<iostream>
    #include<vector>
    
    class Test{
    public:
        Test() {
            a = 1;
        }
        
        ~Test() {
            a = 5;
        }
        
        int a;
    };
    
    int main()
    {
        std::vector<Test> vec;
        vec.push_back(Test());
        
        Test &t = vec.back();
        std::cout << t.a << std::endl;
        
        vec.pop_back();
        
        std::cout << t.a << std::endl;
        
        return 0;
    }

      输出如下:

    1
    5

      是的,很明显,引用指向的元素被析构了。以前我是从没注意过这一块的,嗯,又发现了一个日常可能出错的地方。

  • 相关阅读:
    刷题柱 -- 暂封
    模板重搭建計劃
    思路与好题记录与小技巧
    错误记录
    随便记点东西……
    图床
    杂碎的小技巧
    hnsdfz -- 6.21 -- day7
    hsdf -- 6.21 -- day6
    hnsdfz -- 6.20 -- day5
  • 原文地址:https://www.cnblogs.com/RookieSuperman/p/11257533.html
Copyright © 2011-2022 走看看