|
|
Static objects defined in header files impose a space penalty on all object files that include those headers. If the static objects are of a type that has a constructor, they also impose a runtime penalty on all object files that include those headers. Finally, statics pollute the global namespace, raising the possibility of collision with client-defined names.
Even small penalties can add up for clients with hundreds of object files in their applications. Instead of this:
Foo.h ... static const char x;
We have attempted, wherever possible, to do the following:
Foo.h ... class Foo { private: static const char x; ... };