名空間簡介
名空間定義用c++的關鍵字namespace引導,定義格式:
namespace 名空間標識符名
{
}
成員的聲明
名空間成員的訪問:
使用名空間成員時需用名空間名進行標識,從而解決了標識符的衝突。名空間成員訪問方式如下
名空間標識符名::成員名
名空間的套用
可以指定名空間是C++的新特性,在使用STL類庫時經常用到這么一句:using namespace std;
該語句的含義是使用名空間std。使用名空間可以幫助開發程式人員在開發新的軟體組件時不會和已有軟體組件產生標識符命名衝突。
C++中,頭檔案可以可以使舊版本的*.h,也可以
不帶.h擴展名的頭檔案。編譯預處理指令可以採用任何一種形式的頭檔案方式,但兩種頭檔案不能混合使用。在套用名空間時,使用編譯預處理命令包含相關頭檔案時,應省略頭檔案後綴.h,例如使用iostream.h的方法如下:
#include<iostream>
套用舉例:
例一:
#include<iostream>
#include<string>
using namespace std;//指示在本程式中可以使用c++標準類庫中定義的名字,std是標準名空間名,在標準頭檔案中聲明的函式、對象和類模板,都在名字空間std中聲明
namespace A//用關鍵字定義名字空間A
{
string user_name="namespace A";
int fun()
{
int n=18;
return n;
}
void Display()
{
cout<<"In namespace A……"<<endl;
}
}
namespace B
{
string user_name="namespace B";
int fun()
{
int n=28;
return n;
}
void Display()
{
cout<<"In namespace B……"<<endl;
}
}
int main(void)
{
cout<<A::user_name<<endl;
cout<<"n="<<A::fun()<<endl;
A::Display();
cout<<endl;
cout<<B::user_name<<endl;
cout<<"n="<<B::fun()<<endl;
B::Display();
cout<<endl;
return 0;
}
例二:
#include<iostream>
using namespace std;
int main(void)
{
std::cout<<"This is a C++ program!"<<endl;
return 0;
}
C++中為什麼增加“名空間”和“作用域”?
C語言中規定每個變數都有其有效地作用域,只能在變數的作用域內使用該變數,不能使用其他作用域中的變數。例如:
float a=13.5;
void main()
{
int a=5;
cout<<a;
}
程式中有兩個a變數:一個是全局變數a,實型;另一個是main函式中的整型變數a,它是在main函式中有效的局部變數。根據規定在main函式中局部變數講禁止同名的全局變數。因此上述的輸出是局部變數a的值5,而不是全局實型變數a的值13.5.如果想輸出全局實型變數的值,有什麼辦法呢?c++提供了作用域運算符::,它能指定所需要的作用域。
float a=13.5;
void main()
{
int a=5;
cout<<a<<endl;
cout<<::a<<endl;
}
::a表示全局變數a。請注意:不能用::訪問函式中的局部變數。