之所以需要定义静态变量or静态函数,是为了完成某些全局变量或函数才能完成的功能,而又不会破坏类的封装性同时也解决了对命名空间的污染。
静态可分为全局静态与局部静态:全局静态与普通变量的区别在于解决他的作用域,普通全局变量可以通过extern关键词被其他某块访问,而全局静态不可以,所以不会有命名冲突问题。
局部静态与普通局部变量的区别在于解决变量的生存期:因为静态成员在内存中只有一份(属于类而不属于对象),所以他的生存期和类的生存期是一样的,也就使得它可以记录下每个对象对他的操作结果。
下面再说说静态函数:
类的静态函数同样有静态变量的特性,同时静态函数只能调用类的静态成员变量或静态成员函数,因为其不属于任何对象,所以不能通过对象来调用。调用方式:类名::function(); function可声明为private 或protected(这一点和普通成员函数是一样的)