C++入門:命名空間-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,專業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、電商網(wǎng)站制作開發(fā)、微信小程序開發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!

一.前言?

C++關(guān)鍵字(C++98)總覽:

一.作用域

二.命名沖突

三.命名空間

命名空間定義:

命名空間的嵌套定義:

四.命名空間的使用

五.命名空間的本質(zhì)


一.前言?

C++是從C語言延伸出來的編程語言,C++兼容了C語言百分之九十九的語法和特性,同時(shí)對(duì)于C語言(尤其是面對(duì)規(guī)模較大的工程時(shí))中許多設(shè)計(jì)不合理的地方進(jìn)行了優(yōu)化并容納進(jìn)去了面向?qū)ο缶幊趟枷?,增加了許多有用的庫,以及編程范式等。

C++關(guān)鍵字(C++98)總覽:

C++總計(jì)63個(gè)關(guān)鍵字,C語言32個(gè)關(guān)鍵字

紅色方框圈出了C++新引入的關(guān)鍵字?

一.作用域

項(xiàng)目工程中的作用域分為全局作用域和局部作用域(C++中有命名空間的作用域)

全局作用域中聲明的標(biāo)識(shí)符在所有作用域中都有效,而且具有跨編譯單元(一個(gè).cpp文件就是一個(gè)編譯單元)的鏈接屬性(即在整個(gè)項(xiàng)目工程中可見)。(不考慮static修飾的情況)?

二.命名沖突

當(dāng)局部作用域和全局作用中有標(biāo)識(shí)名重復(fù)定義時(shí),遵循局部?jī)?yōu)先原則,這種情況可以理解為命名污染,此時(shí)程序不會(huì)報(bào)錯(cuò)。

當(dāng)全局作用域中聲明的標(biāo)識(shí)符之間重復(fù)定義時(shí),就會(huì)發(fā)生命名沖突,程序就會(huì)報(bào)錯(cuò)

面對(duì)巨大的項(xiàng)目工程,C語言沒辦法解決類似這樣的命名沖突問題;

三.命名空間

一個(gè)項(xiàng)目中,眾多變量,函數(shù),類以及結(jié)構(gòu)類型的標(biāo)識(shí)名如果重復(fù)出現(xiàn)就會(huì)發(fā)生沖突,而C語言對(duì)此并沒有很好的解決方法(尤其是當(dāng)工程項(xiàng)目特別大的時(shí)候),于是C++便引入了命名空間的語法,很好地避免了大工程中命名沖突或命名污染的問題。

命名空間定義:

定義命名空間,需要使用到namespace關(guān)鍵字,后面跟命名空間的名字,然后接一對(duì){}即可,{}中即為命名空間的成員。

命名空間中可以定義變量/函數(shù)/類型;

namespace bit
{
    // 命名空間中可以定義變量/函數(shù)/類型
    int rand = 10;
    int Add(int left, int right)
    {
        return left + right;
    }
    一個(gè)命名空間就定義了一個(gè)新的作用域,命名空間中的所有內(nèi)容都局限于該命名空間中
}

命名空間不能定義在任何的函數(shù)(方法),類等的局部作用域中;

命名空間可以嵌套定義;

命名空間的嵌套定義:
namespace N1
{
    int a;
    int b;
    int Add(int left, int right)
    {
        return left + right;
    }
    namespace N2
    {
        int c;
        int d;
        int Sub(int left, int right)
        {
            return left - right;
        }
    }
}

命名空間嵌套定義時(shí),內(nèi)層命名空間和外層命名空間即使存在相同的標(biāo)識(shí)符,也不會(huì)發(fā)生命名沖突。

同一個(gè)工程中允許存在多個(gè)相同名稱的命名空間,編譯器會(huì)將同名的命名空間合成同一個(gè)命名空間。命名空間本身的標(biāo)識(shí)名不存在命名沖突的問題。

四.命名空間的使用

作用域限定符? ? ::

取消命名空間限制的關(guān)鍵字:using

一個(gè)命名空間就定義了一個(gè)新的作用域,命名空間中的所有內(nèi)容都局限于該命名空間中

命名空間的使用有三種方式:

(1)在被訪問的標(biāo)識(shí)名前加命名空間名稱及作用域限定符::

被嵌套命名空間中內(nèi)容的訪問

(2)使用using將命名空間中某個(gè)成員引入

(3)?使用using namespace+命名空間名稱:解除相應(yīng)命名空間對(duì)其中所有內(nèi)容的作用域限制

第三種用法相當(dāng)于是取消相應(yīng)的命名空間,對(duì)待這種使用方式應(yīng)持謹(jǐn)慎態(tài)度(尤其是在大項(xiàng)目中),推薦使用的訪問命名空間內(nèi)容的方法是第(1),第(2)種。

五.命名空間的本質(zhì)

命名空間的本質(zhì)作用是將全局作用域劃分為多個(gè)獨(dú)立的子作用域(命名空間限制了其中所有標(biāo)識(shí)名的作用范圍,但沒有改變其中變量的生命周期),各個(gè)子作用域的內(nèi)容無法被直接訪問(編譯和鏈接階段都不能被直接訪問),只有通過作用域限定符:: ,和using關(guān)鍵字才能訪問到相應(yīng)命名空間中的內(nèi)容.

通過這樣語法規(guī)則,C++很好地避免了編程中可能出現(xiàn)的命名污染和命名沖突問題。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:C++入門:命名空間-創(chuàng)新互聯(lián)
本文地址:http://muchs.cn/article24/djihje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、營(yíng)銷型網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站內(nèi)鏈商城網(wǎng)站、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)