gpt4 book ai didi

c++ - 析构函数必须做与构造函数对静态成员所做的相反的事情吗?

转载 作者:行者123 更新时间:2023-11-28 03:31:43 25 4
gpt4 key购买 nike

class A
{
int id;
static int count;
public:
A()
{
count++;
id = count;
cout << "constructor called " << id << endl;
}
~A()
{
//count -=2; /*Keypoint is here. */
/*Uncomment it later. But result doesn't change*/
cout << "destructor called " << id << endl;
}
};

int A::count = 0;

int main()
{
A a[2];
return 0;
}

输出是

constructor called 1
constructor called 2
destructor called 2
destructor called 1

问题是: 即使您取消注释 //count -=2; 结果还是一样。

这是否意味着如果构造函数将静态成员递增 1,那么析构函数也必须恰好将它递减 1,并且您不能更改它的行为?

最佳答案

在调用第一个析构函数后,没有任何内容访问 count。析构函数完全按照您编写的代码执行,修改或不修改 count。但除非以某种方式访问​​ count,否则您将看不到效果。

关于c++ - 析构函数必须做与构造函数对静态成员所做的相反的事情吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12344777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com