亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

莱州市| 大英县| 阳朔县| 汤原县| 泰安市| 黄平县| 长汀县| 曲阜市| 石首市| 临颍县| 临西县| 班玛县| 江山市| 昭苏县| 射阳县| 类乌齐县| 南郑县| 珠海市| 赣榆县| 祥云县| 柳河县| 玉山县| 余庆县| 留坝县| 阿坝| 马边| 涞水县| 神池县| 富裕县| 北安市| 枣阳市| 杨浦区| 司法| 独山县| 东兰县| 津市市| 平远县| 衡水市| 连山| 绥宁县| 彩票|