一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯(lián)系我們 - 廣告服務 - 聯(lián)系電話:
您的當前位置: > 關注 > > 正文

今日熱搜:如何使用using聲明防止命名沖突?命令空間的using聲明

來源:CSDN 時間:2023-03-02 09:34:42

1、概述

我們用到的庫函數(shù)基本上都屬于命名空間std的,在程序使用的過程中要顯示的將這一點標示出來,如std::cout。這個方法比較煩瑣,而我們都知道使用using聲明則更方便更安全。


(資料圖)

這個我們程序員肯定都知道了,今天突發(fā)奇想就想對using整理一下。

2、命令空間的using聲明

我們在書寫模塊功能時,為了防止命名沖突會對模塊取命名空間,這樣子在使用時就需要指定是哪個命名空間,使用using聲明,則后面使用就無須前綴了。例如:

using std::cin;//using聲明,當我們使用cin時,從命名空間std中獲取它int main(){int i;cin >> i;//正確:cin和std::cin含義相同cout << i;//錯誤:沒有對應的using聲明,必須使用完整的名字return 0;}

需要注意的是每個名字需要獨立的using聲明。例如:

using std::cin;//必須每一個都有獨立的using聲明using std::cout;  using std::endl;//寫在同一行也需要獨立聲明

位于頭文件的代碼一般來說不應該使用using聲明。因為頭文件的內容會拷貝到所有引用它的文件中去,如果頭文件里有某個using聲明,那么每個使用了該頭文件的文件就都會有這個聲明,有可能產生名字沖突。

3、在子類中引用基類成員

在子類中對基類成員進行聲明,可恢復基類的防控級別。有三點規(guī)則:

在基類中的private成員,不能在派生類中任何地方用using聲明。在基類中的protected成員,可以在派生類中任何地方用using聲明。當在public下聲明時,在類定義體外部,可以用派生類對象訪問該成員,但不能用基類對象訪問該成員;當在protected下聲明時,該成員可以被繼續(xù)派生下去;當在private下聲明時,對派生類定義體外部來說,該成員是派生類的私有成員。在基類中的public成員,可以在派生類中任何地方用using聲明。具體聲明后的效果同基類中的protected成員。

例如:

class Base {protected:    void test1() { cout << "test1" << endl; }    void test1(int a) {cout << "test2" << endl; }    int value = 55;}; class Derived : Base //使用默認繼承{public:    //using Base::test1;//using只是聲明,不參與形參的指定    //using Base::value;    void test2() { cout << "value is " << value << endl; }};

我們知道class的默認繼承是private,這樣子類中是無法訪問基類成員的,即test2會編譯出錯。但是如果我們把上面注釋的聲明給放開,則沒有問題。

注意:using::test1只是聲明,不需要形參指定,所以test1的兩個重載版本在子類中都可使用。 但是在往下派生,則只能使用無參函數(shù),具體什么原因就不知道了…

4、使用using起別名

相當于傳統(tǒng)的typedef起別名。

typedef std::vectorintvec;using intvec= std::vector;//這兩個寫法是等價的

這個還不是很明顯的優(yōu)勢,在來看一個列子:

typedef void (*FP) (int, const std::string&);

若不是特別熟悉函數(shù)指針與typedef,第一眼還是很難指出FP其實是一個別名,代表著的是一個函數(shù)指針,而指向的這個函數(shù)返回類型是void,接受參數(shù)是int, const std::string&。

using FP = void (*) (int, const std::string&);

這樣就很明顯了,一看FP就是一個別名。using的寫法把別名的名字強制分離到了左邊,而把別名指向的放在了右邊,比較清晰,可讀性比較好。比如:

typedef std::string (* fooMemFnPtr) (const std::string&);    using fooMemFnPtr = std::string (*) (const std::string&);

來看一下模板別名。

templateusing Vec = MyVector; // usageVecvec;

若使用typedef

templatetypedef MyVectorVec; // usageVecvec;

當進行編譯的時候,編譯器會給出error: a typedef cannot be a template的錯誤信息。

那么,如果我們想要用typedef做到這一點,需要進行包裝一層,如:

templatestruct Vec{  typedef MyVectortype;};// usageVec::type vec;

正如你所看到的,這樣是非常不漂亮的。而更糟糕的是,如果你想要把這樣的類型用在模板類或者進行參數(shù)傳遞的時候,你需要使用typename強制指定這樣的成員為類型,而不是說這樣的::type是一個靜態(tài)成員亦或者其它情況可以滿足這樣的語法,如:

templateclass Widget{  typename Vec::type vec;};

然而,如果是使用using語法的模板別名,你則完全避免了因為::type引起的問題,也就完全不需要typename來指定了。

templateclass Widget{  Vecvec;};

一切都會非常的自然,所以于此,模板起別名時推薦using,而非typedef。

感謝大家,我是假裝很努力的YoungYangD(小羊)。

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四
亚洲视频欧洲视频| 亚洲日本激情| 国产欧美欧美| 亚洲高清久久久| 欧美一二三视频| 久久综合狠狠综合久久综合88| 亚洲高清毛片| 久久久国产精品亚洲一区 | 在线播放中文一区| 午夜久久一区| 国产精品一页| 西瓜成人精品人成网站| 国产日韩精品视频一区二区三区| 99成人免费视频| 欧美理论视频| 亚洲美女诱惑| 国产精品国产三级国产aⅴ无密码| 99精品国产在热久久下载| 欧美激情第二页| 99精品国产福利在线观看免费| 久久久免费精品| 狠狠色综合网| 免费高清在线一区| 亚洲精选中文字幕| 国产精品久久久久久久久免费 | 欧美在线视频免费| 欧美在线一区二区三区| 国产三级精品三级| 久久激情婷婷| 亚洲黄色视屏| 国产综合亚洲精品一区二| 欧美激情a∨在线视频播放| 亚洲一级免费视频| 亚洲欧洲午夜| 在线成人性视频| 国产伦精品一区二区三区免费迷 | 99国产精品久久久久久久久久 | 亚洲精品一区二区三| 国产欧美日韩亚洲精品| 欧美激情一区二区三区 | 欧美午夜免费电影| 欧美成人在线免费观看| 久久精品夜色噜噜亚洲a∨| 亚洲一区二区3| 一区二区三区黄色| 亚洲精品视频二区| 亚洲精品国产拍免费91在线| 亚洲第一主播视频| 1769国产精品| 在线观看欧美精品| 亚洲福利视频在线| 亚洲欧洲精品一区二区三区波多野1战4 | 国产真实久久| 国产亚洲成年网址在线观看| 国产精品日韩欧美一区二区三区| 欧美日韩亚洲一区二区三区在线观看 | 欧美成年人在线观看| 蜜桃久久精品乱码一区二区| 裸体歌舞表演一区二区| 久久青草久久| 免费观看成人| 欧美日韩国产综合视频在线观看| 欧美国产三区| 欧美视频中文在线看| 国产精品免费久久久久久| 国产精品一区久久久| 国产一区日韩二区欧美三区| 激情成人中文字幕| 最新亚洲激情| 亚洲男人的天堂在线| 久久激情视频| 欧美激情视频一区二区三区在线播放| 欧美成人一区二区| 欧美亚洲第一区| 国产一二三精品| 亚洲国产日韩综合一区| 宅男精品导航| 久久av二区| 欧美精品色网| 国产婷婷色一区二区三区四区| 亚洲二区免费| 亚洲欧美日本精品| 免费成人黄色片| 国产精品久久久久久久久久久久久 | 久久精品国产欧美激情| 免费观看成人www动漫视频| 欧美日韩国产美| 国产日韩专区在线| 日韩一级免费| 久久久女女女女999久久| 欧美日韩八区| 韩国免费一区| 亚洲影院色在线观看免费| 久久亚洲精品网站| 国产精品欧美在线| 亚洲国产人成综合网站| 午夜精品久久久| 欧美成人中文| 国产在线精品自拍| 在线性视频日韩欧美| 久久夜色精品亚洲噜噜国产mv| 欧美久久电影| 精品9999| 欧美综合国产| 国产精品亚洲综合一区在线观看| 亚洲国产精品一区二区尤物区| 欧美一区二区高清| 国产精品福利久久久| 亚洲人久久久| 美女免费视频一区| 狠狠爱综合网| 欧美影院在线播放| 国产精品网曝门| 亚洲午夜久久久久久尤物 | 欧美色网在线| 亚洲欧洲精品一区二区| 久久精品观看| 国产欧美一区二区视频| 亚洲一级黄色av| 欧美婷婷六月丁香综合色| 亚洲黄色免费网站| 久久综合九色综合欧美狠狠| 国产亚洲精品福利| 亚洲无毛电影| 国产精品第十页| 亚洲一区二区三区在线观看视频| 蜜桃av综合| 亚洲国产视频一区| 美女在线一区二区| 亚洲国产精品va在看黑人| 久久久久欧美| 国内成+人亚洲| 久久精品观看| 在线观看日韩av电影| 久久综合免费视频影院| 激情成人中文字幕| 欧美1区2区3区| 亚洲福利专区| 欧美mv日韩mv国产网站app| 亚洲国产天堂久久国产91| 欧美成人国产一区二区| 亚洲成人在线观看视频| 免费试看一区| 日韩视频中午一区| 欧美日韩亚洲网| 亚洲一区二区三区久久| 国产精品久久久一区二区三区| 亚洲一区二区在线免费观看视频| 国产精品二区二区三区| 亚洲欧美日韩国产一区二区三区 | 这里只有精品丝袜| 国产精品免费视频xxxx| 欧美一区二区三区视频| 一区二区三区亚洲| 欧美久久婷婷综合色| 亚洲特色特黄| 国产一区在线播放| 欧美成人日韩| 亚洲午夜视频在线| 精品二区视频| 欧美色网在线| 久久综合电影一区| 一区二区三区www| 国产一区二区三区四区| 欧美国产日韩在线观看| 亚洲一区在线免费| 在线日韩欧美视频| 国产精品日韩在线| 欧美高清免费| 欧美一区二区三区的| 日韩视频在线播放| 国产亚洲成精品久久| 欧美激情免费在线| 欧美一区二区视频观看视频| 亚洲日本理论电影| 国产一区在线播放| 国产精品国码视频| 久久女同互慰一区二区三区| 亚洲综合好骚| 日韩视频精品在线| 怡红院精品视频在线观看极品| 国产精品都在这里| 欧美极品aⅴ影院| 久久精品综合网| 亚洲一区二区三区在线| 亚洲黄一区二区| 好吊一区二区三区| 国产精品资源| 国产精品黄页免费高清在线观看| 久热re这里精品视频在线6| 先锋影音网一区二区| 一区二区三区不卡视频在线观看 | 亚洲欧美一区在线| 一区二区欧美日韩| 亚洲精品中文字幕在线| 亚洲成人资源| 精久久久久久| 精品成人乱色一区二区| 国产一区二区成人久久免费影院| 国产精品萝li|