lierming__
hihello米
2016-03-29 11:35
采纳率: 0%
浏览 1.2k

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • qq423399099
    小灸舞 2016-03-29 11:48

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

    点赞 评论
  • zilaishuichina
    zilaishuichina 2016-03-29 12: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
    红色的枫叶片 2016-03-29 14:46

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

    点赞 评论
  • xwm1993
    xwm1993 2016-03-29 15:14

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

    点赞 评论
  • lx624909677
    lx624909677 2016-03-29 15:17

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

    点赞 评论
  • caozhy

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

    点赞 评论
  • bai596140538
    Brave_QQ596140538 2016-03-30 01:19

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

    点赞 评论

相关推荐