Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的非成员静态函数允许更改和创建非静态变量_C++ - Fatal编程技术网

C++ 我的非成员静态函数允许更改和创建非静态变量

C++ 我的非成员静态函数允许更改和创建非静态变量,c++,C++,这是代码片段 static chck()//tracking how many times main has been called { static a=0; int y=0;//this is not supposed to work cout<<"Total time main has been called: "; a++; return a; } static chck()//跟踪调用main的次数 { 静态a=0; int y=

这是代码片段

static chck()//tracking how many times main has been called
{
    static a=0;
    int y=0;//this is not supposed to work
    cout<<"Total time main has been called:  ";
    a++;
    return a;
}
static chck()//跟踪调用main的次数
{
静态a=0;
int y=0;//这不应该起作用

CUT< P> <代码>静态< /代码>可能是C++中使用最频繁的关键字。第一次使用它是指<代码> CHCK()/<代码>的链接,即它具有内部链接。第二次使用使<代码> A<代码> >代码>静态< /代码>关于调用<代码> CKCH.()
,即它的值将在调用之间保留。您可以认为
类的
静态
成员函数不能访问非
静态
数据成员,即每个对象实例创建的数据成员。

在这种情况下,“y”是该函数可以访问的堆栈变量


理论是静态成员函数(类中的静态方法)无法访问非静态成员变量(类中的非静态变量),因为没有“this”这样的对象静态成员函数内部。

静态
成员函数无法使用/更改非静态数据成员,因为这毫无意义。该函数不会在任何对象上调用以使用其成员。这
静态
仅意味着该函数具有内部链接。这完全不同。非成员静态函数具有什么功能链接?考虑阅读通过