C++ namespace相關語法實例分析
namespace命名空間是C++中一個非常重要的概念,本文實例展示了namespace的相關語法,供大家參考。具體如下:
本段測試代碼包括如下內容:
(1) 如何訪問namespace中聲明的名稱;
(2) namespace導致的相關沖突;
(3) namespace可嵌套;
(4) 可以在namespace中使用using聲明和using編譯命令;
(5) 未命名的namespace:其作用域為定義該namespace所在的聲明區(qū)域。C++推薦用來替代static定義靜態(tài)變量。
具體程序代碼如下:
#include <iostream> using namespace std; namespace jerry{ int height; int weight; void showHeight(); string name; } // namespace jerry{ void showHeight() { cout<<"Method 3: Jerry height: "<<height<<" kg"<<endl; } } namespace elements { namespace fire { int flame; using namespace jerry; //(4) can use 'using' in namespace define using std::cout; } float water; } //(5) no name namespace //其作用域為定義時所在的聲明域,可用來替換static變量,這是C++標準推薦的行為 namespace { string data; } void testFun(); int main() { cout<<"This code is to test namespace"<<endl; /*not allowed to define namespace in code segment //Error namespace jerry{ int height; int weight; } */ //(1) To access the data in namespace //Method 1: 作用域解析符 jerry::height = 165; cout<<"Method 1: Jerry height: " << jerry::height <<" cm"<<endl; //Method 2: using聲明 using jerry::weight; weight = 64; cout<<"Method 2: Jerry weight: " << weight<<" kg"<<endl; //Method 3: using編譯指令:All the define data in namespace jerry can be access. using namespace jerry; showHeight(); //(2) about name conflict { jerry::name = "Jerry"; string name = "Tom"; //using jerry::name; Error cout << "name: "<<name<<endl; /* This method will lead conflict with locall parameter using jerry::name; cout << "name: "<<name<<endl; */ cout << "name: "<<jerry::name<<endl; using namespace jerry; //局部變量會覆蓋jerry命名空間的name定義 cout << "name: "<<name<<endl; } //(3) namespace can nest elements::fire::flame = 2; using namespace elements::fire; //(5) no name namespace //其作用域為定義時所在的聲明域,可用來替換static變量,這是C++標準推薦的行為 data = "hello"; cout<<"No name namespace: data: " << data <<endl; testFun(); } void testFun() { /*not allowed to define namespace in code segment //Error namespace jerry{ int height; int weight; } */ //(5) no name namespace data = "hello in function"; cout<<"No name namespace: data: " << data <<endl; }
運行結果如下圖所示:
您可能感興趣的文章
- 04-02c語言沒有round函數 round c語言
- 01-10深入理解C++中常見的關鍵字含義
- 01-10使用C++實現全排列算法的方法詳解
- 01-10c++中inline的用法分析
- 01-10用C++實現DBSCAN聚類算法
- 01-10全排列算法的非遞歸實現與遞歸實現的方法(C++)
- 01-10C++大數模板(推薦)
- 01-10淺談C/C++中的static與extern關鍵字的使用詳解
- 01-10深入C/C++浮點數在內存中的存儲方式詳解
- 01-10深入理解C/C++混合編程


閱讀排行
本欄相關
- 04-02c語言函數調用后清空內存 c語言調用
- 04-02func函數+在C語言 func函數在c語言中
- 04-02c語言的正則匹配函數 c語言正則表達
- 04-02c語言用函數寫分段 用c語言表示分段
- 04-02c語言中對數函數的表達式 c語言中對
- 04-02c語言編寫函數冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數 round c語言
- 04-02c語言分段函數怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數 c語言中怎
- 04-02c語言調用函數求fibo C語言調用函數求
隨機閱讀
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結
- 08-05dedecms(織夢)副欄目數量限制代碼修改
- 01-10delphi制作wav文件的方法
- 01-11ajax實現頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個骰子