2 lierming  lierming__ 于 2016.03.29 19:35 提问

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

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

8个回答

caozhy
caozhy   Ds   Rxr 2016.03.29 23:20

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

qq423399099
qq423399099   Ds   Rxr 2016.03.29 19:48

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

zilaishuichina
zilaishuichina   Rxr 2016.03.29 20:08
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;
}
xs62551652
xs62551652   2016.03.29 22:46

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

xwm1993
xwm1993   2016.03.29 23:14

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

lx624909677
lx624909677   Ds   Rxr 2016.03.29 23:17

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

bai596140538
bai596140538   2016.03.30 09:19

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

CSDNXIAOD
CSDNXIAOD   2016.03.30 11:31

解决yum的奇怪问题,先执行以下命令
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!