程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 第17章 用於大型程序的工具(10)

第17章 用於大型程序的工具(10)

編輯:C++入門知識

17.2.4 命名空間成員的使用

除了在函數或其他作用域內部,頭文件不應該包含using指示或using聲明。在其頂級作用域包含using指示或using聲明的頭文件,具有將該名字注入包含該頭文件的文件中的效果。頭文件應該只定義作為其接口的一部分的名字,不要定義在其實現中使用的名字。

1. using聲明,扼要重述

一個using聲明一次只引入一個命名空間成員,它使得無論程序中使用哪些名字,都能夠非常正確。

using std::vector; 
using std::string; 
using std::vector;
using std::string;2. using聲明的作用域

using聲明可以出現在全局作用域、局部作用域或者命名空間作用域中。類作用域中的using聲明局限於被定義類的基類中定義的名字。

class Book{ 
protected: 
    virtual void Method1() throw(logic_error){} 
}; 
 
class NoteBook:private Book{ 
protected: 
    using Book::Method1; 
}; 
class Book{
protected:
 virtual void Method1() throw(logic_error){}
};

class NoteBook:private Book{
protected:
 using Book::Method1;
};3. 命名空間別名

命名空間別名聲明以關鍵字namespace開頭,接(較短的)命名空間別名名字,再接=,再接原來的命名空間名字和分號。如果原來的命名空間名字是未定義的,就會出錯。

命名空間別名也可以引用嵌套的命名空間。

namespace vec=Anders::NameSpace1; 
vec::Class1 c1(); 
 namespace vec=Anders::NameSpace1;
 vec::Class1 c1();一個命名空間可以有許多別名,所有別名以及原來的命名空間名字都可以互換使用。

4. using指示

像using聲明一樣,using指示使我們能夠使用命名空間名字的簡寫形式。與using聲明不同,using指示無法控制使得哪些名字可見——它們都是可見的。

5. using指示的形式

using指示以關鍵字using開頭,後接關鍵字namespace,再接命名空間名字。如果該名字不是已經定義的命名空間名字,就會出錯。

using指示使得特定命名空間的所有名字可見,沒有限制。短格式名字可從using指示點開始使用,直到出現using指示的作用域的末尾。

using namespace std; 
using namespace Anders::NameSpace2; 
using namespace std;
using namespace Anders::NameSpace2;6. using指示與作用域

using指示不聲明空間成員名字的別名,相反,它具有將命名空間成員提升到包含命名空間本身和using指示的最近作用域的效果。

using指示有用的一種情況是,用在命名空間本身的實現文件中。

摘自 xufei96的專欄
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved