您的位置:首页 > 编程语言 > C语言/C++

c++中静态成员函数访问非静态成员变量

2013-04-19 10:47 417 查看
开始之前先看一个例子

#include <iostream>

using namespace std;

class A

{

public:

//void show(int j){x=j;cout<<x;}

void static show(int j){x=j;cout<<x<<endl;}

private:

int x;

};

int main()

{

A b;

b.show(10);

return 0;

}

编译出错。原因很简单,静态成员函数不能访问非静态成员变量,这是因为静态成员函数属于整个类的而不是属于某个对象。静态成员函数没有隐含的指向某个对象的this指针。所以,它就无法访问自己类的非静态成员。

那么如何才能访问呢?看下面代码:

#include <iostream>

using namespace std;

class A

{

public:

//void show(int j){x=j;cout<<x;}

void static show(A*a,int j){a->x=j;cout<<a->x<<endl;}

private:

int x;

};

int main()

{

A b;

b.show(&b,10);

return 0;

}

编译运行正确。

这里将一个对象指针作为静态成员函数的"this”指针,模仿传递非静态成员函数里的this变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: