【问题标题】:C++: static member variableC++:静态成员变量
【发布时间】:2012-03-24 15:51:45
【问题描述】:

声明:“静态成员变量只能通过静态方法更改。”

这个说法正确吗,静态成员变量也可以用非静态方法改变吗?

谢谢!

【问题讨论】:

    标签: c++ variables static member non-static


    【解决方案1】:

    这是不正确的。静态成员可以被非静态成员函数访问和修改。

    【讨论】:

      【解决方案2】:

      错了。 static 数据成员可以被任何成员函数更改。 static方法也可以被任何成员函数调用。

      反之则不可能:static 方法不能调用非static 方法,也不能访问非static 成员。

      这是因为static 成员(方法和数据)绑定到类,而非静态绑定到类实例。

      【讨论】:

      • 非常感谢您的详细解答!
      【解决方案3】:

      陈述不正确。您可以从任何类成员函数以及静态成员可见的任何其他函数修改静态成员(即可以从任何地方修改公共静态)。

      【讨论】:

        【解决方案4】:

        static 数据成员(和静态成员函数)可以从程序中的任何位置访问,只要访问说明符允许:

        struct test {
           void foo() {
              x = 1;
              bar();
           }
           static bar() {
              x = 2;
           }
           static int x;
        };
        int test::x = 0;
        int main() {
           test::bar();
           test::x = 3;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-08
          • 2016-05-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多