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;

 

posted @ 2017-06-24 17:54  么么那个哒哒  阅读(687)  评论(0编辑  收藏  举报