A GetFoo
обычно используется, когда вы не хотите копировать свой класс/объект. Например:
class Foo
{
private:
Foo(){};
~Foo();
public:
static Foo* GetFoo(void)
{
static Foo foo;
return &foo;
}
int singleobject;
};
Вы можете получить доступ к внешним singleobject
через Foo::GetFoo()->sinlgeobject
. Частные конструкторы и деструкторы не позволяют вашему классу создавать копии.
Для использования static Foo foo
у вас должны быть объявлены публичные конструкторы, что означает, что вы всегда получаете к нему свой класс, но ваш класс также сможет получать копии.
С глобальной переменной вы рискуете назвать конфликты имен. – VoidStar
См. Http://stackoverflow.com/questions/12186857/on-local-and-global-static-variables-in-c. –
Ленивая инициализация. – iammilind