C++ namespace相關(guān)語法實(shí)例分析
namespace命名空間是C++中一個(gè)非常重要的概念,本文實(shí)例展示了namespace的相關(guān)語法,供大家參考。具體如下:
本段測(cè)試代碼包括如下內(nèi)容:
(1) 如何訪問namespace中聲明的名稱;
(2) namespace導(dǎo)致的相關(guān)沖突;
(3) namespace可嵌套;
(4) 可以在namespace中使用using聲明和using編譯命令;
(5) 未命名的namespace:其作用域?yàn)槎x該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 //其作用域?yàn)槎x時(shí)所在的聲明域,可用來替換static變量,這是C++標(biāo)準(zhǔn)推薦的行為 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; //局部變量會(huì)覆蓋jerry命名空間的name定義 cout << "name: "<<name<<endl; } //(3) namespace can nest elements::fire::flame = 2; using namespace elements::fire; //(5) no name namespace //其作用域?yàn)槎x時(shí)所在的聲明域,可用來替換static變量,這是C++標(biāo)準(zhǔn)推薦的行為 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; }
運(yùn)行結(jié)果如下圖所示:
相關(guān)文章
最新C/C++中的new和delete的實(shí)現(xiàn)過程小結(jié)
這篇文章主要介紹了C/C++中的new和delete的實(shí)現(xiàn)過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06C++深入講解對(duì)象的銷毀之析構(gòu)函數(shù)
構(gòu)造函數(shù)在創(chuàng)建對(duì)象時(shí)被系統(tǒng)自動(dòng)調(diào)用,而析構(gòu)函數(shù)(Destructor)在對(duì)象被撤銷時(shí)被自動(dòng)調(diào)用,相比構(gòu)造函數(shù),析構(gòu)函數(shù)要簡(jiǎn)單的多2022-04-04C語言內(nèi)存函數(shù) memcpy,memmove ,memcmp
這篇文章主要介紹了C語言內(nèi)存函數(shù) memcpy,memmove ,memcmp,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09基于VC中使用ForceInclude來強(qiáng)制包含stdafx.h的解決方法
本篇文章是對(duì)VC中使用ForceInclude來強(qiáng)制包含stdafx.h的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05