c++ - 变量在析构函数调用中不递增?
问题描述
#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
调用析构函数之前打印 - 它将在范围结束时调用。添加新块会产生预期的输出:
int main() {
{
constructor c;
}
cout<<constructor::c<<" "<<constructor::d;
}
推荐阅读
- r - 按自定义换行符聚合
- javascript - 使用 mocha 测试异步功能
- mapkit - 通过点击 pin 注释转到 SwiftUI 视图
- python - Python - 使用相同的键提取多个 json
- amazon-web-services - 允许外部访问 aws 上的堡垒主机
- sql - SQL 连接没有给我正确的总数
- camera - OpenCV:calibrateHandEye 函数的错误结果
- python - 如何修复未定义的“NameError”“Person”
- javascript - 用 react-intersection-observer 开玩笑测试反应组件
- python - 正则表达式将数字字符串替换为字符串