A static member function is a type of member function that does not need a specific object.
- Declare a member function that does not modify the state of its object a static member function [1]
- Declare a member function that does not modify the state of its object a static member function [1], but only if there is no need to trigger a unit test for that class. As static member functions bypass the constructor, and I use the constructor to start a unit test, making a member function like 'Transmogrify' static, leaves it untested. A member function like 'GetVersion' is fine to keep static, especially if the class has no default constructor
- Bjarne Stroustrup. The C++ Programming Language (4th edition). 2013. ISBN: 978-0-321-56384-2. Chapter 16.4. Advice. page 479: '[11] Make a function that needs access to the representation of a class but needn't be called for a specific object a static member function'