解釋:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
舉例: 一個班裏只能有一個班主任,無論何時找班主任,都指向同一個人。
班主任類
HeadTeacher.h
#pragma once
// 班主任類
class HeadTeacher
{
public:
~HeadTeacher();
// 訪問唯一實例的接口
static HeadTeacher* getInstance();
private:
HeadTeacher(); // 構造函數私有化,禁止外部調用
private:
static HeadTeacher* instance; // 保存唯一實例
};
HeadTeacher.cpp
#include "HeadTeacher.h"
HeadTeacher* HeadTeacher::instance = nullptr;
HeadTeacher::HeadTeacher()
{
}
HeadTeacher::~HeadTeacher()
{
}
HeadTeacher* HeadTeacher::getInstance()
{
if (nullptr == instance)
{
instance = new HeadTeacher();
}
return instance;
}
main.cpp
#include <iostream>
#include "HeadTeacher.h"
int main(int agrc, char* argv[])
{
HeadTeacher* ht1 = HeadTeacher::getInstance();
HeadTeacher* ht2 = HeadTeacher::getInstance();
if (ht1 == ht2)
{
std::cout << "They are the same person." << std::endl;
}
else
{
std::cout << "They are different people." << std::endl;
}
getchar();
return 0;
}
運行結果