首页 > 解决方案 > 变量在析构函数调用中不递增?

问题描述

#include <iostream>

using namespace std;

class constructor {
public:
    static int c, d;

    constructor() {
        c++;
    }
    ~constructor() {
        d++;
    }
};

int constructor::c, constructor::d;

int main() {
    constructor c;
    cout<<constructor::c<<" "<<constructor::d;
    return 0;
}

Output: 1 0

如果我显式调用析构函数,那么输出是,1 1

我想知道,为什么d隐式调用析构函数时不递增?

标签: c++

解决方案


您在c调用析构函数之前打印 - 它将在范围结束时调用。添加新块会产生预期的输出:

int main() {
    {
        constructor c;
    }
    cout<<constructor::c<<" "<<constructor::d;
}

推荐阅读