C++ namespace相關文法執行個體分析_C 語言

來源:互聯網
上載者:User

namespace命名空間是C++中一個非常重要的概念,本文執行個體展示了namespace的相關文法,供大家參考。具體如下:

本段測試程式碼封裝括如下內容:

(1) 如何訪問namespace中聲明的名稱;
(2) namespace導致的相關衝突;
(3) namespace可嵌套;
(4) 可以在namespace中使用using聲明和using編譯命令;
(5) 未命名的namespace:其範圍為定義該namespace所在的聲明地區。C++推薦用來替代static定義靜態變數。

具體程式碼如下:

#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;}

運行結果如下圖所示:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.