Object-oriented programming promotes the minimizing of global variables in software designs. Although global variables are alternatives to function arguments, they have several problems:
You cannot encapsulate global variables. Their declarations make them available to functions that may not need to access them.
Functions may inadvertently change global variables and cause side effects somewhere else.
Programs with a large number of global variables are hard to enhance and maintain.
C++ provides a viable alternative to global variables, which solves these problems: static data members. A static data member encapsulates a variable within a class, creating a single member shared by all objects you instantiate from the class. ...