求c++大神,解决以下问题,先谢谢了

在 c++中,静态的函数可以访问 非静态的数据成员吗?能的话如何访问?谢了

c++

7个回答

假设是可以访问的,那么一个类可以有很多实例,也可以一个实例都没有,假设可以的话,那么请问,你访问实例变量究竟是哪个实例对象的。遇到没有创建实例的时候又当如何?

不能的。C++会区分两种类型的成员函数:静态成员函数和非静态成员函数。这两者之间的一个重大区别是,静态成员函数不接受隐含的this自变量。所以,它就无法访问自己类的非静态成员。

class A
{
public:
    A()
    {
        i = 123;
    }

    static void StaticFun(const A& a)
    {
        printf("%d", a.i);
    }

private:
    int i;
};

int main(int argc, char* argv[])
{
    A a;

    A::StaticFun(a);

    return 0;
}

不能,静态成员函数属于类不包含在类对象中,类的非静态成员函数包含在类对象中

不能,静态成员函数只能访问静态成员变量。

静态函数不能访问非静态变量

这个要根据存储模型来考虑:静态函数属于类本身,占内存,而非静态变量是属于变量,实例话才有空间,所以这两个东西没有直接关联所以不能访问了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!