C++名稱空間的使用 (轉)

gugu99發表於2008-04-28
C++名稱空間的使用 (轉)[@more@]

c++語言提供一個全域性的名稱空間namespace,可以避免導致全域性命名衝突問題。舉一個例項,請注意以下兩個頭:

// one.h
char func(char);
class String { ... };

// somelib.h
class String { ... };

如果按照上述方式定義,那麼這兩個標頭檔案不可能包含在同一個中,因為String類會發生衝突。
所謂名稱空間,是一種將程式庫名稱封裝起來的方法,它就像在各個程式庫中立起一道道圍牆。比如:
// one.h
namespace one
{
  char func(char);
  class String { ... };
}

// somelib.h
namespace SomeLib
{
  class String { ... };
}

現在就算在同一個程式中使用String類也不會發生衝突了,因為他們分別變成了:one::String()以及Somelib::String()

這樣,就可以透過宣告名稱空間來區分不同的類或等了。
比如C++標準庫定義了名稱空間:std,其中包含容器vector,示例如下:
#include "stdafx.h"
#include
#include
#include
using namespace std;

int main(int argc, char* argv[])
{
 const int arraysize = 7;
 int ia[arraysize] = {0,1,2,3,4,5};

 義容器vector
 vector ivect(ia,ia+arraysize);

 vector::iterator it1 = find(ivect.begin (),ivect.end (),4);
 if(it1 == ivect.end ())
 cout< else
 cout<

 return 0;
}

輸出結果為:4 found 4.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1003091/,如需轉載,請註明出處,否則將追究法律責任。

相關文章