1.static variable can only be declared inside class
cannot initialized inside class
and it must be initialized after class.
2. static func can only access static variable
other functions inside class can access static variable freely
3. static variable can be private/public
when it is private, it cannnot be accessed via
Base::var = 0;
4.A static member function cannot have access to the 'this'
pointer of the class
5.Do not declare a static member function as virtual!!!