【发布时间】:2013-01-25 14:23:18
【问题描述】:
我想创建一个具有静态方法的类,该方法返回对静态变量的引用(在方法内部声明)。我想要的是在调用该方法以获取静态变量的引用时。然后当我在类外修改它并再次调用该方法以获得我之前设置的相同值时。
这是我尝试过的:
#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?
注意:我希望静态变量在方法内部显式声明,而不是作为成员。
谢谢!
【问题讨论】:
-
你永远不会这样做
A::f()=something; -
为什么不呢?试过了,效果很好......
-
“你从不做”就像“你忘了做”,而不是“你不能做”。
-
你的意思是这是不好的做法?....我在我正在开发的一个非常大的生产应用程序中看到了类似的代码,这就是我问的原因。
-
不!正如我在上一条消息中试图解释的那样,您误解了我的英语。写
A::f()=3是件好事。您问题中的程序很糟糕,因为它不包含任何此类声明。
标签: c++ oop static static-methods