//
// main.cpp
// Hunger_Singleton_pattern
//
// Created by apple on 2019/3/10.
// Copyright © 2019年 apple. All rights reserved.
//
#include <iostream>
class Example
{
private:
static Example *single;
Example();
public:
static Example *GetSingleton();
void test();
};
Example *Example::single = new Example();
Example::Example(){}
Example *Example::GetSingleton()
{
return single;
}
void Example::test()
{
std::cout<<this<<std::endl;
}
int main(int argc, const char * argv[]) {
Example *a = Example::GetSingleton();
Example *b = Example::GetSingleton();
a->test();
b->test();
return 0;
}
0x10055b9b0
0x10055b9b0
Program ended with exit code: 0
饿汉单例模式,什么是饿汉单例模式?饿汉单例模式是单例模式的一种实现方式,其中饿汉二字表示很迫切的需要该对象实例,所以在类加载时就需要创建该单例对象实例。
如何达到该目的呢?我们知道静态方法在类加载的时候装载,所以通过一个静态方法,在该静态方法中返回一个静态变量可以实现单例模式。那么要实现饿汉单例模式需要进行什么样的特殊处理呢?因为饿汉模式是迫切的需要该对象实例,那么我们可以在类加载的时候,一并创建该单例对象,即给单例对象赋值。
根据c++语法,在c++中,初始化静态变量需要在类外初始化,所以通过在类外初始化该静态变量,即可实现用静态方法返回一个静态变量。
饿汉单例模式的静态变量的初始化由C++完成,规避了线程安全问题。所以饿汉单例模式是线程安全的。并且在大多数情况下使用饿汉单例模式是没有问题的。
网友评论