C++ 类静态方法访问它';s静态数据成员

C++ 类静态方法访问它';s静态数据成员,c++,class,memory,static,C++,Class,Memory,Static,这个问题是对: 这个问题的好处是,每当调用类方法时,都会隐式地传递对象的地址,这有助于它使用“this*”访问类的数据成员 跟进问题是: 类的静态方法如何访问类的静态数据成员 争论仍然是一样的。函数只能访问堆栈上加载的局部变量 静态数据成员或其地址是否隐式加载到静态函数堆栈中 如果没有,它是如何工作的 原因是两者都未绑定到该类的实例 例如 class test { public: static int i=5; static int getI(){return i;}

这个问题是对:

这个问题的好处是,每当调用类方法时,都会隐式地传递对象的地址,这有助于它使用“this*”访问类的数据成员

跟进问题是:

  • 类的静态方法如何访问类的静态数据成员
争论仍然是一样的。函数只能访问堆栈上加载的局部变量

  • 静态数据成员或其地址是否隐式加载到静态函数堆栈中

  • 如果没有,它是如何工作的


    • 原因是两者都未绑定到该类的实例

      例如

      class test
      {
         public:
         static int i=5;
         static int getI(){return i;}
      };
      
      您可以访问
      i
      如:

      int a=test::i;
      
      或者

      int a=test::getI();
      
      i
      存储在程序的全局数据部分。它不绑定到对象,因此对于创建的每个实例,它也是相同的。您可以访问i,而无需创建
      类测试的实例
      <代码>类测试在这种情况下仅是一个名称空间。没有内存魔法。

      没有“静态函数堆栈”这样的东西。类静态成员只是名称中带有
      的全局变量;他们有一个由链接器分配的地址。