全局变量没有增加(是gcc坚果吗?)

 几米小八_198 发布于 2023-01-08 17:36

我有以下愚蠢的代码:IDEONE

有人可以解释,为什么删除std :: vector中的对象A时全局计数器不会增加?

#include 
#include 
#include 

int global;

class A {
public:
    A(int i): a(i) {}
    ~A() {
        std::cout << "delete A" << std::endl;
        ++global;
    };
    int foo() {
        return a;
    }
    int a;
};


int main() {


        int c = 0;
        int loops = 10;
        global = 0;

        // Make vector of pointers
        std::vector > vec;
        for(int i = 0; i< 10; i++) {
            vec.push_back( std::shared_ptr(new A(i))    );
        }

        for(int i=0; ifoo();
            }
        }

        std::cout << " deleted:" << global << std::endl;

}

输出:

 deleted:0
delete A
delete A

ecatmur.. 5

A对象被删除后,您打印globalcout.

1 个回答
  • A对象被删除后,您打印globalcout.

    2023-01-08 17:38 回答
撰写答案
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有