类静态方法访问它的静态数据成员
Posted
技术标签:
【中文标题】类静态方法访问它的静态数据成员【英文标题】:Class static method access to it's static data members 【发布时间】:2015-02-23 06:16:37 【问题描述】:这个问题是延伸到:Class method access to it's data members 从这个问题中得出的结论是,每当调用类方法时,它都会隐式传递对象的地址,这有助于它使用“this*”访问类的数据成员。
后续问题是:
类的静态方法如何访问类的静态数据成员?参数保持不变。函数只能访问加载在堆栈上的局部变量。
静态数据成员或其地址是否已隐式加载到静态函数堆栈中?
如果不是,它是如何工作的?
【问题讨论】:
没有所谓的“静态函数堆栈”。类静态成员只是名称中带有::
的全局变量;它们有链接器分配的地址。
【参考方案1】:
原因是两者都没有绑定到该类的实例。
例如
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
在这种情况下只是一个命名空间。没有记忆魔法。
【讨论】:
以上是关于类静态方法访问它的静态数据成员的主要内容,如果未能解决你的问题,请参考以下文章
静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?