C++系列: 巢狀名稱空間
目錄
1.什麼是巢狀名稱空間?
巢狀名稱空間就是在名稱空間裡面在定義其它的名稱空間,就像是俄羅斯套娃。
namespace np1
{
namespace np2
{
namespace np3
{
}
}
...
}
2.實驗
2.1 外部引用巢狀名稱空間內的符號
情況一
#include <iostream>
using namespace std;
namespace np1
{
namespace np2
{
void func2()
{
cout << "np1::np2::func2" << endl;
}
}
void func1()
{
cout << "np1::func1" << endl;
}
}
int main()
{
np1::func1();
np1::np2::func2();
return 0;
}
實驗結果
表明巢狀名稱空間的引用是符合namespace語法的,沒有特殊之處。
情況二
using namespace np1;
int main()
{
func1();
np2::func2();
return 0;
}
輸出結果一樣。
2.2 名稱空間內容不同層次間符號的引用
情況一:第一層呼叫第二層
#include <iostream>
using namespace std;
namespace np1
{
namespace np2
{
void func2()
{
cout << "np1::np2::func2" << endl;
}
}
void func1()
{
np2::func2();
}
}
int main()
{
np1::func1();
return 0;
}
實驗結果
表明在名稱空間內部的不同層次符號引用依然遵循namespace語法。
情況二:第二層呼叫第一層
#include <iostream>
using namespace std;
namespace np1
{
void func1()
{
cout << "np1::func1" << endl;
}
namespace np2
{
void func2()
{
func1();
//np1::func1();
}
}
}
int main()
{
np1::np2::func2();
return 0;
}
實驗結果
表明np1相對於np2來說,是預設名稱空間或者是全域性名稱空間。
情況三:第二層呼叫第一層,但是第一層和第二層存在相同的符號
#include <iostream>
using namespace std;
namespace np1
{
void func1()
{
cout << "np1::func1" << endl;
}
namespace np2
{
void func1()
{
cout << "np1::np2::func1" << endl;
}
void func2()
{
func1();
}
}
}
int main()
{
np1::np2::func2();
return 0;
}
實驗結果
表明np2優先會呼叫自己內部的符號。正如一個函式的內部,它會優先呼叫自己的區域性變數,接著才考慮尋找全域性變數。
3.最後
一定要記住,namespace本質是用來解決命名衝突的問題。
相關文章
- 內聯和巢狀名稱空間巢狀
- c++系列:匿名名稱空間C++
- C++名稱空間C++
- Python動態引數、名稱空間、函式巢狀、global和nonlocalPython函式巢狀
- 名稱空間
- PHP名稱空間PHP
- PHP 名稱空間PHP
- 20200109 - 名稱空間
- python名稱空間Python
- vuex名稱空間Vue
- 15-名稱空間
- Python名稱空間包Python
- 11. 名稱空間
- ts---名稱空間
- 使用p名稱空間和c名稱空間的XML快捷方式XML
- C++ 動態記憶體分配與名稱空間C++記憶體
- C++名稱空間、標準輸入輸出、引用C++
- Python中名稱空間是什麼?名稱空間生命週期是多久?Python
- ros節點名稱空間ROS
- PHP 核心特性 - 名稱空間PHP
- Kubernetes 名稱空間入門
- 3-1 名稱空間
- 什麼是名稱空間?
- Python作用域和名稱空間Python
- spring框架中的名稱空間Spring框架
- System.Security.Cryptography 名稱空間
- Python中名稱空間包簡介Python
- PHP 物件導向 (三)名稱空間PHP物件
- OpenCV 名稱空間學習筆記OpenCV筆記
- php名稱空間的呼叫順序PHP
- 瞭解下C# 名稱空間(Namespace)C#namespace
- PHP 獲取不帶名稱空間的類名PHP
- yaml檔案中在哪加名稱空間?YAML
- Kubernetes 的層級名稱空間介紹
- Python3 名稱空間和作用域Python
- 自研 PHP 框架 1.1_名稱空間PHP框架
- 深入講解Python名稱空間規則!Python
- 對名稱空間的一點個人理解