目錄
創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、電商網(wǎng)站制作開發(fā)、微信小程序開發(fā)、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!一.前言?
C++關(guān)鍵字(C++98)總覽:
一.作用域
二.命名沖突
三.命名空間
命名空間定義:
命名空間的嵌套定義:
四.命名空間的使用
五.命名空間的本質(zhì)
C++是從C語言延伸出來的編程語言,C++兼容了C語言百分之九十九的語法和特性,同時(shí)對于C語言(尤其是面對規(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)識符在所有作用域中都有效,而且具有跨編譯單元(一個(gè).cpp文件就是一個(gè)編譯單元)的鏈接屬性(即在整個(gè)項(xiàng)目工程中可見)。(不考慮static修飾的情況)?
三.命名空間當(dāng)局部作用域和全局作用中有標(biāo)識名重復(fù)定義時(shí),遵循局部優(yōu)先原則,這種情況可以理解為命名污染,此時(shí)程序不會報(bào)錯(cuò)。
當(dāng)全局作用域中聲明的標(biāo)識符之間重復(fù)定義時(shí),就會發(fā)生命名沖突,程序就會報(bào)錯(cuò)
面對巨大的項(xiàng)目工程,C語言沒辦法解決類似這樣的命名沖突問題;
一個(gè)項(xiàng)目中,眾多變量,函數(shù),類以及結(jié)構(gòu)類型的標(biāo)識名如果重復(fù)出現(xiàn)就會發(fā)生沖突,而C語言對此并沒有很好的解決方法(尤其是當(dāng)工程項(xiàng)目特別大的時(shí)候),于是C++便引入了命名空間的語法,很好地避免了大工程中命名沖突或命名污染的問題。
命名空間定義:定義命名空間,需要使用到namespace關(guān)鍵字,后面跟命名空間的名字,然后接一對{}即可,{}中即為命名空間的成員。
命名空間中可以定義變量/函數(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)識符,也不會發(fā)生命名沖突。
四.命名空間的使用同一個(gè)工程中允許存在多個(gè)相同名稱的命名空間,編譯器會將同名的命名空間合成同一個(gè)命名空間。命名空間本身的標(biāo)識名不存在命名沖突的問題。
作用域限定符? ? ::
取消命名空間限制的關(guān)鍵字:using
一個(gè)命名空間就定義了一個(gè)新的作用域,命名空間中的所有內(nèi)容都局限于該命名空間中
五.命名空間的本質(zhì)命名空間的使用有三種方式:
(1)在被訪問的標(biāo)識名前加命名空間名稱及作用域限定符::
被嵌套命名空間中內(nèi)容的訪問
(2)使用using將命名空間中某個(gè)成員引入
(3)?使用using namespace+命名空間名稱:解除相應(yīng)命名空間對其中所有內(nèi)容的作用域限制
第三種用法相當(dāng)于是取消相應(yīng)的命名空間,對待這種使用方式應(yīng)持謹(jǐn)慎態(tài)度(尤其是在大項(xiàng)目中),推薦使用的訪問命名空間內(nèi)容的方法是第(1),第(2)種。
命名空間的本質(zhì)作用是將全局作用域劃分為多個(gè)獨(dú)立的子作用域(命名空間限制了其中所有標(biāo)識名的作用范圍,但沒有改變其中變量的生命周期),各個(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級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享題目:C++入門:命名空間-創(chuàng)新互聯(lián)
本文地址:http://www.rwnh.cn/article24/djihje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、營銷型網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站內(nèi)鏈、商城網(wǎng)站、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容