Sad*_*que 1 c++ visual-c++ c++11
class A
{
static int x;
};
Run Code Online (Sandbox Code Playgroud)
如何获取x
使用指针成员的地址?
因为它是静态的,所以这应该是这样的语法:
int *px = &A::x; //x is static member
Run Code Online (Sandbox Code Playgroud)
对于非静态成员,这是语法:
int A::*py = &A::y; //y is non-static member
Run Code Online (Sandbox Code Playgroud)
例:
struct A
{
static int x;
int y;
};
int A::x=100;
int main() {
int *px = &A::x;
int A::*py = &A::y;
A a;
a.y = 200;
cout << *px << endl; //used just like normal pointers
cout << a.*py << endl; //note how the pointer-to-member is used!
cout << a.y << endl; //a.*py and a.y are equivalent!
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
100
200
200
Run Code Online (Sandbox Code Playgroud)
请注意指向静态成员的指针与指向非静态成员的指针之间的区别,以及它们的使用方式!