zoukankan      html  css  js  c++  java
  • C++ 单例模式(读书笔记)

    #include <iostream>

    class Singleton {
        static Singleton s;
        int i;
        Singleton(int x):i(x) {}
        Singleton& operator=(Singleton&);
        Singleton(const Singleton&);
    public:
        static Singleton& instance() {return s;}
        int getValue() {return i;}
        void setValue(int x) {i=x;}
    };

    Singleton Singleton::s(47);

    int main() {
        Singleton& s=Singleton::instance();
        std::cout<<s.getValue()<<std::endl;
        Singleton& s2=Singleton::instance();
        s2.setValue(9);
        std::cout<<s.getValue()<<std::endl;

        return 0;
    }

    创建一个单例模式的关键是防止客户程序员获得任何控制其对象生存期的权利。为了做到这一点,

    声明所有的构造函数为私有,并且防止编译器隐式生成任何构造函数。拷贝构造函数和赋值操作符

    被声明为私有,以便防止任何这类复制的动作产生。还必须决定如何去创建这个对象。在这里,它

    是被静态创建的,但也可以等待,直到客户程序员提出要求再根据要求进行创建。这种方式称作惰

    性初始化,这种做法,只在创建对象的代价不大,并且不总是需要它的情况下才有意义。

  • 相关阅读:
    ZOJ 3018
    poj2464
    Gauss
    【C】关于内存地址
    【C】typedef与define的区别
    C位移操作
    操作系统使用批处理文件更改网络配置
    【Linux】查看某个进程的线程数量(转)
    数据结构快速排序
    C++Explanation of ++val++ and ++*p++ in C
  • 原文地址:https://www.cnblogs.com/donggongdechen/p/9692349.html
Copyright © 2011-2022 走看看