所以我有一段带有这样的类的代码:

#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,因此将其值打印出来。

10-07 22:17