C++中的Static关键字

来源:互联网 发布:淘宝怎么实名认证激活 编辑:程序博客网 时间:2024/06/03 21:12

一、静态数据成员&静态成员函数的定义:

 

1为静态成员函数,2为静态数据成员

静态数据成员s_iCount并不依赖对象而依赖类(没有实例化对象的时候这个静态数据成员就存在),它的实例化不在构造函数中进行,而是单独进行(最下面红色的那一行)。


二、访问静态成员函数和静态数据成员的两种方式:


注:因为静态的函数和数据成员不依赖于类,所以可以用类名直接访问,也可以通过对象来访问

三、


静态成员函数不可以调用普通的数据成员,只能调用静态数据成员,静态成员函数和静态数据成员随类的产生而产生,也就是依赖于类,而普通的数据成员是依赖于对象的,如果一个对象都不产生,那么在静态成员函数中调用普通数据成员显然是会失败的。

原理上讲:定义普通的函数Fire()和静态的函数getCount(),fire()实际上传了一个隐形的this指针,可以知道当前调用的是哪一个对象对应的数据成员。调用静态数据成员s_iCount时,因为和类相关和对象无关,有没有this无所谓

静态的getCount()并不会传入一个隐形的指针没办法调用,怎么知道调用的数据成员是哪一个对象的数据成员呢?所以无法调用非静态的数据成员或者成员函数;但可以调用静态的数据成员(可以看成全局的数据)


四、总结

静态数据成员必须单独初始化

静态成员函数不能调用非静态成员函数和非静态数据成员

静态数据成员只有一份,且不依赖对象而存在

0 0
原创粉丝点击