静态成员函数不可以访问类中的成员变量

2025-03-21 14:03:47
推荐回答(2个)
回答1:

访问的意思就是读或者写,输出属于读出行为,自然不行。

静态成员函数不属于任何一个类对象,没有this指针,而非静态成员必须随类对象的产生而产生,所以静态成员函数"看不见"非静态成员,自然也就不能访问了

但是如果静态成员函数通过引用一个对象,是可以直接访问成员的,也体现了它成员函数的特权。

比如

class A
{
int m_i;
public:
static void f()
{
m_i=666;   //这是非法的,这个等价于this->m_i=666,而静态方法没有this
}
static void f(A&a)
{
a.m_i=666;   //这样就可以
}
};

回答2:

明显不可以啊 !!! 普通变量必须实例化才会出现 !! 你直接输出是几个意思???