编程异常吧 关注:1贴子:24
  • 0回复贴,共1

在静态成员函数中是不能调用非静态成员

只看楼主收藏回复

1、在静态成员函数中是不能调用非静态成员的,包括非静态成员函数和非静态成员变量。Why?
class Point
{
public:
static void init()
{
x = 0, y = 0;
}
private:
int x;
int y;
};
在类中,一个静态函数(init()),不属于某个具体对象,也就是说在还没有产生(Point)类的任何一个具体对象时,该函数就已经存在于程序的代码区了。但这时,Point类的数据成员x和y还没有分配内存空间,这样,在init函数中对他们进行赋值操作就是不可能的正确的。
☆关于函数之间的引用许可,可以从内存模型这一角度来考虑。
☆同时,根据上面例子可以得出:静态成员函数只能访问静态成员变量。


1楼2014-08-13 21:59回复