这个问题是对以下内容的延伸:
Class method access to it's data members
从问题中得出的结论是,每当调用一个类方法时,它都会被隐含地传递给对象的地址,这有助于它使用' this *'来访问类的数据成员。
后续问题是:
论点保持不变。函数只能访问堆栈中加载的局部变量。
静态数据成员或其地址是否隐含地加载到静态函数堆栈中?
如果不是,它是如何运作的?
答案 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
只是这种情况下的命名空间。没有记忆魔力。