所以我有一段带有这样的类的代码:
#include<iostream>
#include<cstring>
class stu
{
static int proba;
public:
stu();
static int no(){
return proba;
}
};
int stu::proba=0;
stu::stu()
{
proba=proba+1;
}
int main()
{
std::cout<< stu::no << std::endl;
}
输出为1。
即使我将
stu::no
更改为仅{return 12;}
,它也会这样做为什么会发生?我如何解决它??
最佳答案
将其更改为std::cout<< stu::no() << std::endl;
如果没有()
,我相信它会作为一个指针进行评估,而不是您所期望的。
编辑:正如@Loomchild指出的那样,使用g++ -Wall
将提供有关为什么它始终为1的更多信息。在这种情况下,指向静态函数的指针始终被评估为true
,因此将其值打印出来。