对静态功能感到困惑

时间:2014-09-07 16:24:54

标签: c++ oop static static-methods

我得到了这个小代码片段,我有点困惑为什么它以这种方式工作。当我调用A :: put_x(3)时,由于它是一个静态函数,所以不会改变吗?谢谢!

#include<iostream>
using namespace std;

class A
{
private:
    static int x;
    int y;
public:
    A(int i) { x = i; y = -i; }
    static int put_x(A a) { return x + a.y; }
};

int A::x = 5;
int main()
{
    A a(7);
    cout << A::put_x(3);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

显示正确的结果。

静态X变化的痕迹:

  1. 第14行,初始化A :: x,x == 5
  2. 第17行,main()中的A实例,x == 7
  3. 第18行,作为转换整数的结果的新临时实例:A(3),x == 3
  4. 当你调用put_x时,它会计算临时对象的x(现在是&#39; s 3)和y(-3)之和。 结果为0,如预期的那样。