类中静态成员的地址

Shu*_*tra 2 c++ static pointers class static-members

如何在C++中获取类的私有静态成员的内存地址.在下面的代码中,我通过他们的内存地址直接访问类的私有成员.

#include <iostream>

class directM {
    int a;
    int b;
public:
    directM(int aa , int bb){
        a = aa;
        b = bb;
    }
    void show(){
        std::cout << a << b << std::endl;
    }
};

int main(){
    directM dm(10,20);
    dm.show();
    *(int*)( &dm ) = 15;
    *(int*)( ( (int*)(&dm) ) + 1 ) = 25;
    dm.show();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我更改其中一个成员并使其成为静态,即

static int b;

现在我如何能够通过其地址直接访问此私有成员.

注意: - 我知道这是一种非常不明智的方式来访问数据,我不是用它来解决任何问题.这只是一个学习练习,可以更好地了解语言.

Mar*_*som 7

静态成员变量不是对象的一部分,它们的存储是完全独立的.有没有办法知道他们的位置,而无需访问变量名.