Singleton cpp-ben.

Egy egyszerű singleton osztály.


// Singleton.hpp
class Singleton
{
  public:
    static Singleton * GetInstance();
    static void* operator new(size_t);
    static void operator delete(void *);

  protected:
    Singleton() {};
    virtual ~Singleton() { instance_ = 0; };
  private:
    static Singleton * instance_;
};

// ha van delete, legyen new is.
void* Singleton::operator new (size_t size)
{
  return ::operator new (size);
}

// Azért, hogy többször ne lehessen megsémisíteni az objektumot.
void Singleton::operator delete(void* memory)
{
  if (!memory)
    return;

  ::delete memory;
  memory = 0; // Biztos, ami biztos;
}

// Singleton.cpp

Singleton* Singleton::instance_ = 0;

Singleton* Singleton::GetInstance()
{
  if (instance_)
    return instance_;
  
  instance_ = new Singleton;
  return instance_;
}