1、定义
函数调用的结果不会访问或者修改任何对象(非static)数据成员,这样的成员声明为静态成员函数比较好。如果static int func(…)不是出现在类中,则它不是一个静态成员函数,只是一个普通的全局函数。由于static的限制,它只能在文件所在的编译单位内使用,不能在其它编译单位内使用。
2、注意事项
(1)访问方式
方式一:可以使用对象进行访问。
对象.静态的函数名();
方式二:可以使用类名进行访问。(推荐)
类名.静态函数名字。
(2)与非静态区别
1、静态成员函数是类的成员函数,该函数不属于该类申请的任何一个对象,而是所有该类成员共同共有的一个函数。
2.静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失。
3、静态函数不能出现this或者super关键字
(因为this是指向对象本身,而静态函数是这个类本身拥有并不是单纯哪个对象的)
4、静态的函数可以直接访问静态的成员,但是不能直接访问非静态的成员。
非静态的函数是可以直接访问静态与非静态的成员
(因为静态函数是可以使用类名直接调用的,这时候可能还没有存在对象,而非静态的成员数据是随着对象的存在而存在的。)