目錄

一.前言?
C++關鍵字(C++98)總覽:
一.作用域
二.命名沖突
三.命名空間
命名空間定義:
命名空間的嵌套定義:
四.命名空間的使用
五.命名空間的本質
C++是從C語言延伸出來的編程語言,C++兼容了C語言百分之九十九的語法和特性,同時對于C語言(尤其是面對規模較大的工程時)中許多設計不合理的地方進行了優化并容納進去了面向對象編程思想,增加了許多有用的庫,以及編程范式等。
C++關鍵字(C++98)總覽:一.作用域C++總計63個關鍵字,C語言32個關鍵字
紅色方框圈出了C++新引入的關鍵字?
二.命名沖突項目工程中的作用域分為全局作用域和局部作用域(C++中有命名空間的作用域)
全局作用域中聲明的標識符在所有作用域中都有效,而且具有跨編譯單元(一個.cpp文件就是一個編譯單元)的鏈接屬性(即在整個項目工程中可見)。(不考慮static修飾的情況)?
三.命名空間當局部作用域和全局作用中有標識名重復定義時,遵循局部優先原則,這種情況可以理解為命名污染,此時程序不會報錯。
當全局作用域中聲明的標識符之間重復定義時,就會發生命名沖突,程序就會報錯
面對巨大的項目工程,C語言沒辦法解決類似這樣的命名沖突問題;
一個項目中,眾多變量,函數,類以及結構類型的標識名如果重復出現就會發生沖突,而C語言對此并沒有很好的解決方法(尤其是當工程項目特別大的時候),于是C++便引入了命名空間的語法,很好地避免了大工程中命名沖突或命名污染的問題。
命名空間定義:定義命名空間,需要使用到namespace關鍵字,后面跟命名空間的名字,然后接一對{}即可,{}中即為命名空間的成員。
命名空間中可以定義變量/函數/類型;
namespace bit { // 命名空間中可以定義變量/函數/類型 int rand = 10; int Add(int left, int right) { return left + right; } 一個命名空間就定義了一個新的作用域,命名空間中的所有內容都局限于該命名空間中 }
命名空間不能定義在任何的函數(方法),類等的局部作用域中;
命名空間可以嵌套定義;
命名空間的嵌套定義: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; } } }
命名空間嵌套定義時,內層命名空間和外層命名空間即使存在相同的標識符,也不會發生命名沖突。
四.命名空間的使用同一個工程中允許存在多個相同名稱的命名空間,編譯器會將同名的命名空間合成同一個命名空間。命名空間本身的標識名不存在命名沖突的問題。
作用域限定符? ? ::
取消命名空間限制的關鍵字:using
一個命名空間就定義了一個新的作用域,命名空間中的所有內容都局限于該命名空間中
五.命名空間的本質命名空間的使用有三種方式:
(1)在被訪問的標識名前加命名空間名稱及作用域限定符::
被嵌套命名空間中內容的訪問
(2)使用using將命名空間中某個成員引入
(3)?使用using namespace+命名空間名稱:解除相應命名空間對其中所有內容的作用域限制
第三種用法相當于是取消相應的命名空間,對待這種使用方式應持謹慎態度(尤其是在大項目中),推薦使用的訪問命名空間內容的方法是第(1),第(2)種。
命名空間的本質作用是將全局作用域劃分為多個獨立的子作用域(命名空間限制了其中所有標識名的作用范圍,但沒有改變其中變量的生命周期),各個子作用域的內容無法被直接訪問(編譯和鏈接階段都不能被直接訪問),只有通過作用域限定符:: ,和using關鍵字才能訪問到相應命名空間中的內容.
通過這樣語法規則,C++很好地避免了編程中可能出現的命名污染和命名沖突問題。

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
分享題目:C++入門:命名空間-創新互聯
本文地址:http://www.yijiale78.com/article24/djihje.html
成都網站建設公司_創新互聯,為您提供微信公眾號、營銷型網站建設、定制網站、網站內鏈、商城網站、小程序開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯