zoukankan      html  css  js  c++  java
  • LintCode_1 单例模式

    从今天开始我的LintCode之旅,由于C/C++好久没有使用了,语法生疏不说,低级错误频繁出现,因此在做题之后,还会有部分时间复习语法项目。

    -----------------------------

    单例模式:

    单例 是最为最常见的设计模式之一。对于任何时刻,某个类只存在且最多存在一个具体的实例。

    ----------------------------

    C++实现单例模式的思路是:类成员包含一个类对象的指针,在构造函数执行之前加一道防线,通过一个函数检查是不是已经产生过一个对象了,如果产生了,就直接返回这个指针即可,如果没有产生过,就调用构造函数产生一个并赋值给这个指针、返回指针。

    主要用到的知识是静态函数、变量的用法。下面做些简单总结

    1.static修饰变量或者函数,表示该变量或者函数是全局的,但是名称限制在了一个cpp中,不能用extern来在其他cpp中访问,当static在函数中声明,也还是全局变量,但是可见范围进一步缩小,只在函数中可见。

    2.当static修饰类成员时候,需要注意的是这些变量或者函数相当于只是被类名这个作用域包裹,它不属于类本身。因此,被static修饰的函数在类中是不会自己传递this指针的。

    3.static修饰的函数是受到public/private等限制的,其定义在类中,所以相较与其他全局函数,它可以自由访问类成员。

    4.static的用处常见比如给类成员计数,或者是单例模式

    --------------------------------------------------

    class Solution {
    public:
        /**
         * @return: The same instance of this class every time
         */
        static Solution* getInstance()
        {
            if(pointer == NULL)
            {
                pointer=new Solution();
            }
            return pointer;
        }
    private:
        Solution() {}  // 构造函数
        static Solution* pointer;
    };
    Solution* Solution::pointer=NULL;
  • 相关阅读:
    php--------ThinkPHP3.2验证码使用
    mysql--------四种索引类型
    php--------递归函数
    php--------对象(object) 与 数组(array) 的转换
    ZH奶酪:Windows7+VirtualBox安装Ubuntu虚拟机问题总结
    第一次工作面试(蘑菇街)
    ZH奶酪:【阅读笔记】Deep Learning, NLP, and Representations
    web开发学习之旅
    隐马尔可夫模型实战
    ZH奶酪:Python中range和xrange的区别
  • 原文地址:https://www.cnblogs.com/lumaoxin/p/7073998.html
Copyright © 2011-2022 走看看