【问题标题】: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*”访问类的数据成员。

后续问题是:

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

参数保持不变。函数只能访问加载在堆栈上的局部变量。

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

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

【问题讨论】:

  • 没有所谓的“静态函数堆栈”。类静态成员只是名称中带有:: 的全局变量;它们有链接器分配的地址。

标签: c++ class memory static


【解决方案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 在这种情况下只是一个命名空间。没有记忆魔法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多