91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

深入理解命名空間

發布時間:2020-06-28 09:01:13 來源:網絡 閱讀:1222 作者:我是你帆哥 欄目:編程語言

一、為什么使用命名空間

  一個大型的工程往往是由若干個人獨立完成的,不同的人分別完成不同的部分,最后再組合成一個完整的程序。由于各個頭文件是由不同的人設計的,有可能在不同的頭文件中用了相同的名字來命名所定義的類或函數,這樣在程序中就會出現名字沖突。不僅如此,有可能我們自己定義的名字會與C++庫中的名字發生沖突。

    名字沖突就是在同一個作用域中有兩個或多個同名的實體,為了解決命名沖突 ,C++中引入了命名空間,所謂命名空間就是一個可以由用戶自己定義的作用域,在不同的作用域中可以定義相同名字的變量,互不干擾,系統能夠區分它們。


二、什么是命名空間

  命名空間是程序設計者命名的內存區域,程序設計者根據需指定一些有名字的空間域,把一些全局實體分別存放到各個命名空間中,從而與其他全局實體分隔開。

  通俗的說,每個名字空間都是一個名字空間域,存放在名字空間域中的全局實體只在本空間域內有效。名字空間對全局實體加以域的限制,從而合理的解決命名沖突。

例:

namespace na

{

   int a;

   char c;

}

則 a和c只在na的作用域內有效。


在聲明一個命名空間時,花括弧內不僅可以包含變量,而且還可以包含以下類型:

變量(可以帶有初始化)

常量

函數(可以是定義或聲明)

結構體

模板

命名空間(命名空間可以嵌套定義)

例:

namespacens1

{

                int a;

                char c = 10;

                void fun();

                int Add(int a, int b)

                {

                                return a + b;

                }

                namespace ns2

                {

                                int b;

                }

}


注意,如果此時想輸出b,則需要指定外層和內層的命名空間

cout<<ns1::ns2::b<<endl;


三、使用命名空間成員的方法

1、在引用命名空間成員時,要用命名空間名和作用域解析符對命名空間成員進行限定,以區別不同的命名空間中同名標識符。即  命名空間名::命名空間成員名


2、還可以給命名空間取別名

例:

namespace Television

{...}

namespace Tv=Television;

則Tv就是命名空間Television的別名,在以后用到Television的地方都可以用Tv進行替換。


3、使用using命名空間成員名

using后面的命名空間成員名必須是有命名空間限制的名字。

例:using ns1::a;

  以上語句表明,在using的作用域內如果使用到ns1中的成員a,則不必再用命名空間限定。在以后的程序中如果用到a,則隱含的指ns1::a。  using聲明的作用域是從using語句開始,到using所在的作用域結束。要注意,在同一作用域內用using聲明的不同的命名空間的成員不能有同名的成員,否則會發生重定義。


4、使用using namespace 命名空間名

  第三條介紹的using命名空間成員名,一次只能聲明一個命名空間成員,如果一個命名空間中有多個變量,就需要多次使用using命名空間成員名。C++中還提供了using namespace 語句來實現一次聲明一個命名空間內的全部成員。

例如:

using namespace ns1;

  聲明了在本作用域中要用到命名空間ns1中的成員,在使用該命名空間內的任何成員時都不必使用命名空間限定。在用using namespace聲明的作用域中,命名空間ns1的成員好像在全局域中聲明的一樣,因此不用加命名限定。


4、無名的命名空間

例:

namespace

{

   void fun();

}


  由于沒有名字,所以其它文件無法引用,它只能在本文件的作用域內有效,它的作用域使重無名命名空間聲明開始到本文件結束。在本文件使用無名命名空間成員時不必用命名空間限定。其實無名命名空間和static是同樣的道理,都是只在本文件內有效,無法被其它文件引用。


5、標準命名空間

  C++庫的所有標識符都是在一個名為std的命名空間中定義的,或者說標準頭文件(iostream)中的函數、類、對象和類模板是在命名空間std中定義的。所以在C++程序的一開始,就用using namespace對std進行全局聲明。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹阳市| 西畴县| 双峰县| 梁河县| 清徐县| 民乐县| 阿鲁科尔沁旗| 安顺市| 旅游| 玛纳斯县| 汤阴县| 湘西| 迁西县| 丁青县| 乌兰县| 扎兰屯市| 珠海市| 洛扎县| 舟曲县| 兴业县| 赤壁市| 辽源市| 盱眙县| 扎囊县| 新巴尔虎右旗| 巴彦淖尔市| 翁源县| 都江堰市| 腾冲县| 崇文区| 蓬莱市| 乌鲁木齐县| 弥勒县| 河源市| 宁阳县| 天等县| 临洮县| 崇左市| 鹤庆县| 界首市| 柘城县|