• 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;
  • 相关阅读:
    洛谷P3953 逛公园
    洛谷P1247 取火柴游戏
    洛谷P2024 食物链
    洛谷P2680 运输计划
    hdu 1495 非常可乐(bfs)
    poj3984 迷宫问题(简单的输出路径的bfs)
    Codeforces 729C Road to Cinema(二分)
    Codeforces Technocup 2017
    Codeforces Technocup 2017
    poj 2251 Dungeon Master(bfs)
  • 原文地址:https://www.cnblogs.com/lumaoxin/p/7073998.html
Copyright © 2020-2023  润新知