Why does code like thiscause linker error "multiple definition of 'Foo::sInt' when foo.h is included in several source files? I was under the impression that the purpose of header guards was precisely to prevent such an error.Code:#ifndef _foo_h #define _foo_h class Foo { public: static int sInt; }; int Foo::sInt = 1; #endif