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;
}

我们的老师告诉我们静态函数不能改变或创建非静态变量 但它对我有用,为什么?

最佳答案

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

理论是静态成员函数(类中的静态方法)不能访问非静态成员变量(类中的非静态变量),因为在静态成员函数中没有对象作为“this”。

关于c++ - 我的非成员静态函数允许更改和创建非静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24559395/

相关文章:

c++ - 将二维 vector 保存到文本文件

C++ 将选项(的子集)传递给函数的优雅方式

c++ - 复制字符串函数

c++ - 如何提示用户输入字符或数字?

c++ - 在 Xwindow 中访问其他窗口的标题

c++ - C++中具有默认参数的函数指针

c++ - 迭代器适配器仅迭代 map 中的值?

c++ - 像时尚一样在网格中格式化 C++ 中的输入

c++ - 将 Google C++ 测试框架与 CMake 结合使用的最简单示例

c++ - Abort() 已被调用 - Connect Function multithreads Cpp