C++ namespace相關(guān)語法實例分析
namespace命名空間是C++中一個非常重要的概念,本文實例展示了namespace的相關(guān)語法,供大家參考。具體如下:
本段測試代碼包括如下內(nèi)容:
(1) 如何訪問namespace中聲明的名稱;
(2) namespace導(dǎo)致的相關(guān)沖突;
(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;
}
運行結(jié)果如下圖所示:

相關(guān)文章
最新C/C++中的new和delete的實現(xiàn)過程小結(jié)
這篇文章主要介紹了C/C++中的new和delete的實現(xiàn)過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
C++?OpenCV技術(shù)實戰(zhàn)之身份證離線識別
OpenCV身份證離線識別技術(shù)的主要技術(shù)就是通過OpenCV找到身份證號碼區(qū)域,然后通過OCR進行數(shù)字識別該區(qū)域的截圖即可得到身份證號碼。感興趣的可以了解一下2021-12-12
C語言實現(xiàn)學(xué)生宿舍信息管理系統(tǒng)
這篇文章主要為大家詳細介紹了C語言實現(xiàn)學(xué)生宿舍信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

