gpt4 book ai didi

c++ - 静态方法中的静态变量不会改变

转载 作者:太空狗 更新时间:2023-10-29 23:25:37 24 4
gpt4 key购买 nike

我想创建一个具有静态方法的类,该方法返回对静态变量(在方法内部声明)的引用。我想要的是在调用方法时获取静态变量的引用。然后当我在类外修改它并再次调用该方法时,得到我之前设置的相同值。

这是我尝试过的:

#include <iostream>
using namespace std;

class A
{
public:
static int& f()
{
static int i;
return i;
}
};

int main()
{
static int i;
i = A::f();

cout << i << endl;

i = 11;
cout << i << endl;

i = A::f();
cout << i << endl;

return 0;
}

问题是这段代码的输出是:

0
11
0
Press <RETURN> to close this window...

为什么它不返回 0, 11, 11 我怎样才能让它返回 0, 11, 11

注意:我希望静态变量在方法内部显式声明,而不是作为成员。

谢谢!

最佳答案

这是因为您将引用返回的值复制到常规变量中:当您将 int& 存储在 int 中时,它不再是引用。

你应该做的是

int &i = A::f();

请注意,局部i 不必是static:对静态数据的引用可以毫无问题地存储在自动变量中。

关于c++ - 静态方法中的静态变量不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14523717/

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