I am Charmie

メモとログ

デザインパターン (C++): Singleton

header

class Singleton {
private:
  static Singleton* instance_;
  Singleton();
  Singleton(const Singleton& rhs);
  Singleton& operator=(const Singleton& rhs);
public:
  ~Singleton();
  static Singleton* getInstance();
}
Singleton* Singleton::instance_ = nullptr;

source

Singleton::Singleton() {
}

Singleton::~Singleton() {
  if(instance_ !=) {
    delete instance_;
  }
}

Singleton::Singleton(const Singleton& rhs) {
  instance_ = rhs.instance_;
}

Singleton& Singleton::operator=(const Singleton& rhs) {
  instance_ = rhs.instance_;
  return *this;
}

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