中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++怎么使用單例模式實現命名空間函數

發布時間:2023-05-05 15:42:31 來源:億速云 閱讀:217 作者:iii 欄目:開發技術

本篇內容介紹了“c++怎么使用單例模式實現命名空間函數”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

本案例實現一個test命名空間,此命名空間內有兩個函數,分別為getName()和getNameSpace();

  • 聲明命名空間及函數

namespace test{
    const std::string& getName()和();
    const std::string& getNameSpace();
}
  • 命名空間內實現單例類
    實現一個單例類,構造函數要為private,自身對象為private
    靜態成員函數(才可以調用靜態成員變量)

namespace test{
    // 實現一個單例類,構造函數要為private,自身對象為private
    class ThisNode{
    private:
        std::string name_;
        std::string namespace_;
        static ThisNode *thisNode;
        ThisNode():name_("empty"),namespace_("namespace"){};

    public:
        // 靜態成員函數(才可以調用靜態成員變量)
        /**
         * 函數:實例化類
         * 返回值:ThisNode&
        */
        static ThisNode& instance(){
            if(thisNode==nullptr){
                std::cout << "沒有" <<std::endl;
                thisNode = new ThisNode();
                return *thisNode;
            }else{
                std::cout << "有" <<std::endl;
                return *thisNode;
            }
        }
        // 普通成員函數
        const std::string& getName() const{
            std::cout <<"get name:"<<name_<<std::endl;
            return name_;
        }
        const std::string& getNameSpace() const{
            std::cout <<"getNameSpace:" << namespace_ << std::endl;
            return namespace_;
        }
    };
    // 初始化靜態成員
    ThisNode *ThisNode::thisNode = nullptr;

    // 實現命名空間內的函數,實例化一個類,并調用函數
    const std::string& getNameSpace(){
        return ThisNode::instance().getNameSpace();
    }
    const std::string& getName(){
        return ThisNode::instance().getName();
    }

};
  • 實現命名空間函數
    首先調用的是類的靜態成員函數實例化唯一對象,然后調用對象中的方法;

// 實現命名空間內的函數,實例化一個類,并調用函數
const std::string& getNameSpace(){
	return ThisNode::instance().getNameSpace();
}
const std::string& getName(){
	return ThisNode::instance().getName();
}
  • 調用

int main(){
    // 使用
    test::getNameSpace();
    test::getName();
    return 0;
}

c++怎么使用單例模式實現命名空間函數

全部代碼

#include<string>
#include<iostream>

// 聲明命名空間內的兩個函數
namespace test{
    const std::string& getName()和();
    const std::string& getNameSpace();
}

namespace test{
    // 實現一個單例類,構造函數要為private,自身對象為private
    class ThisNode{
    private:
        std::string name_;
        std::string namespace_;
        static ThisNode *thisNode;
        ThisNode():name_("empty"),namespace_("namespace"){};

    public:
        // 靜態成員函數(才可以調用靜態成員變量)
        /**
         * 函數:實例化類
         * 返回值:ThisNode&
        */
        static ThisNode& instance(){
            if(thisNode==nullptr){
                std::cout << "沒有" <<std::endl;
                thisNode = new ThisNode();
                return *thisNode;
            }else{
                std::cout << "有" <<std::endl;
                return *thisNode;
            }
        }
        // 普通成員函數
        const std::string& getName() const{
            std::cout <<"get name:"<<name_<<std::endl;
            return name_;
        }
        const std::string& getNameSpace() const{
            std::cout <<"getNameSpace:" << namespace_ << std::endl;
            return namespace_;
        }
    };
    // 初始化靜態成員
    ThisNode *ThisNode::thisNode = nullptr;

    // 實現命名空間內的函數,實例化一個類,并調用函數
    const std::string& getNameSpace(){
        return ThisNode::instance().getNameSpace();
    }
    const std::string& getName(){
        return ThisNode::instance().getName();
    }

};

int main(){
    // 使用
    test::getNameSpace();
    test::getName();
    return 0;
}

“c++怎么使用單例模式實現命名空間函數”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

嘉鱼县| 无为县| 定边县| 宽城| 廊坊市| 珲春市| 眉山市| 武宁县| 泰兴市| 贡嘎县| 资源县| 高邮市| 喀什市| 石狮市| 留坝县| 句容市| 武宣县| 子长县| 额尔古纳市| 晴隆县| 泾源县| 岱山县| 南召县| 大渡口区| 彩票| 沽源县| 彭阳县| 南华县| 梁河县| 驻马店市| 濮阳市| 垦利县| 鄂托克前旗| 延寿县| 巴彦县| 平凉市| 洪江市| 偏关县| 大英县| 鸡泽县| 周宁县|