国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C++初級主題--名字空間域和類域

2019-11-14 08:49:22
字體:
來源:轉載
供稿:網友

一.序

在C++中支持三種域:局部域、名字空間域和類域。

二.名字空間域

1.名字空間域是隨標準C++而引入的。它相當于一個更加靈活的文件域(全局域),可以用花括號把文件的一部分括起來,并以關鍵字namespace開頭給它起一個名字:

namespace ns1{ float a,b,c; fun1(){……} … }

花括號括起來的部分稱聲明塊。聲明塊中可以包括:類、變量(帶有初始化)、函數(帶有定義)等。在域外使用域內的成員時,需加上名字空間名作為前綴,后面加上域操作符“::” 。這里添加了名字空間名稱的成員名被稱為限定修飾名(qualified name)。如:ns1::a,ns1::fun1()等等。 最外層的名字空間域稱為全局名字空間域(global namespace scope),即文件域。

2.名字空間域可分層嵌套,同樣有分層屏蔽作用。例如:

namespace cplusplus_PRimer{ namespace Matrixlib{ //名字空間嵌套 class matrix{……} //名字空間類成員matrix …... } }

訪問matrix,可寫:cplusplus_primer::Matrixlib::matrix 。 使用using聲明可只寫一次限定修飾名。using聲明以關鍵字using開頭,后面是被限定修飾的(qualified)名字空間成員名:

using cplusplus_primer::Matrixlib::matrix;//名字空間類成員matrix的using聲明

以后在程序中使用matrix時,就可以直接使用成員名,而不必使用限定修飾名。

3.使用using指示符可以一次性地使名字空間中所有成員都可以直接被使用,比using聲明方便。using指示符以關鍵字using開頭,后面是關鍵字namespace,然后是名字空間名。 標準C++庫中的所有組件都是在一個被稱為std的名字空間中聲明和定義的。在采用標準C++的平臺上使用標準C++庫中的組件,只要寫一個using指示符: using namespace std; 就可以直接使用標準C++庫中的所有成員。這是很方便的。 名字空間可以不連續,分為多段,但它們仍是同一個名字空間。名字空間域不能定義在函數聲明、函數定義或類定義的內部。

4.名字空間域的引入,主要是為了解決全局名字空間污染(global namespace pollution)問題,即防止程序中的全局實體名與C++各種庫中聲明的全局實體名沖突。

三.類域

1.類體也定義了一個域稱為類域。在類域中說明的標識符僅在該類的類域內有效。必須加上“類名::”作限定修飾。 2.類的實體——對象中的公有成員也可以在對象之外訪問,但必須使用成員訪問操作符“.”,對象名+“.”+成員名。 3.定義類本身的目的就是要實現一個封裝性,對外是封閉的,對內是開放的,在程序中并不總是需要用成員訪問符之類來引用類成員。多數程序代碼本身就在類域中,這些程序可以直接訪問類成員。 4.####在類域中類成員在類體中被聲明的順序同樣很重要,后聲明的成員不能被先聲明的成員引用。

編譯器對名字(標識符)的解析分兩步

第一步查找在聲明中用到的名字,包括數據成員和函數成員聲明中用到的參數類型,第二步才是函數成員體內的名字。例如:

class string{ //字符串類public: typedef int index_type;//為易讀易懂用下標型命名 char GetstringElement(index_type elem) { return Astring[elem]; } // Astring未說明private: char Astring[30]; //Astring后說明};

表面上看是錯的;實際上是對的。因為Astring名字的解析是在第一步,而內聯函數使用它是在第二步。

四.總結

這一篇主要闡述一下名字空間域,類域,作用域限定符等問題,為后續開展閱讀源碼的工作做準備,馬上將會講述C++標準庫中的數據結構


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 商洛市| 延庆县| 杭锦后旗| 盐源县| 昌宁县| 二连浩特市| 和田县| 靖安县| 浙江省| 克山县| 常州市| 清河县| 桐庐县| 莱西市| 禹州市| 黔西县| 和静县| 兴业县| 申扎县| 平舆县| 浦县| 南溪县| 安义县| 望江县| 安吉县| 出国| 兴海县| 河池市| 贵定县| 淳安县| 射阳县| 阜平县| 哈尔滨市| 措勤县| 江达县| 威远县| 竹山县| 博白县| 万宁市| 盐源县| 西和县|