C++中的静态成员函数与静态数据成员、非静态数据成员、非静态成员函数间的调用关系

C++中这三类关系如下:

      首先要明白:静态成员函数是可以调用非静态数据成员的,具体怎么调用,看下面。

class A 

{

public:

       static void fun (  A  a )

       { 

              cout << b <<endl;(错误)

              cout << a.b<<endl;(正确)

        }

privte:

       int b;

}

如上面的例子,假如静态成员函数需要调用非静态数据成员,那么必须要借助具体的某个对象进行调用,为什么呢?

原因:因为静态成员函数和非静态数据成员都是为整个类所属,不是具体的某个对象所特有,对静态成员函数的调用它是没有目的对象的,不像非静态成员函数那样,有个大家所知道的this之类也就是本类的隐式对象去访问非静态成员。因此静态成员函数必须以通过参数对象的方式去访问具体的某个非静态数据成员。

总结:

     (1)静态成员函数可以直接调用该类的静态数据成员和非静态成员函数,但是调用非静态数据成员的时候必须通过传对象参数的方式去调用。

     (2)一般情况下,(1)也是不建议去这样调用非静态数据成员,静态成员函数主要的作用是为了访问一个类中的静态数据成员,维护对象之间共享的数据。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值