单例模式
// Singleton.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <memory>
using namespace std;
template< typename T >
class Singleton
{
public:
static std::shared_ptr<T> Instance();
private:
Singleton();
static std::shared_ptr<T> p;
};
template<typename T>
std::shared_ptr<T> Singleton<T>::p = nullptr;
template<typename T>
std::shared_ptr<T> Singleton<T>::Instance() {
if (p == nullptr) {
p = std::make_shared<T>();
}
return p;
}
int main()
{
std::shared_ptr<int> p = Singleton<int>::Instance();
std::cout << *p << " ";
return 0;
}