Agreed it is not really relevant, because C++ is not pure OOP, with or without static, however it is important to know, when you talk with OOP purists about some different languages.
OOP requires abstraction, encapsulation, polymorphism. Static supports none of them, and is often used to break encapsulation. E.g. you can't override a static method. Or you can't pass a static method to something that expects an object method. They can't be truly private - two objects using the same private static member are in fact dependent on each other's internals. So I was really very astonished, when someone claimed static to be an inherent feature of OOP (just as someone claiming classes to be an inherent feature of OOP, where in fact, they are not needed at all for a language to be OOP).
In languages like Ruby and Python classes are objects too, and they can have their own attributes. |
This is a different thing, for different purpose. It is not even called static and it doesn't have most of limitations of static in C++, C# or Java and is a much stronger construct. They are just methods, they support abstraction, polymorphism, encapsulation, they are bound dynamically, not statically, they can be passed to anything that expects method, etc.