类静态方法访问它的静态数据成员

时间:2015-02-23 06:16:37

标签: c++ class memory static

这个问题是对以下内容的延伸:
Class method access to it's data members
从问题中得出的结论是,每当调用一个类方法时,它都会被隐含地传递给对象的地址,这有助于它使用' this *'来访问类的数据成员。

后续问题是:

  • 类的静态方法如何能够访问类的静态数据成员?

论点保持不变。函数只能访问堆栈中加载的局部变量。

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

  • 如果不是,它是如何运作的?

1 个答案:

答案 0 :(得分:0)

原因是因为两者都没有绑定到该类的实例。

例如

class test
{
   public:
   static int i=5;
   static int getI(){return i;}
};

您可以访问i,如:

int a=test::i;

或喜欢

int a=test::getI();

i存储在程序的全局数据部分中。它不受对象的约束,因此对于创建的每个实例它也是相同的。您可以在不创建class test实例的情况下访问i。 class test只是这种情况下的命名空间。没有记忆魔力。