欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中的命名空間詳細介紹

 更新時間:2022年02月13日 09:26:34   作者:EJoft  
大家好,本篇文章主要講的是C++中的命名空間詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

命名空間的特性

首先熟悉一下命名空間的兩個概念。

聲明區(qū)域:可以在其中進行聲明的區(qū)域,如全局文件的聲明區(qū)域是文件,函數(shù)內(nèi)聲明的變量聲明區(qū)域為代碼塊。潛在作用域:潛在作用域從聲明點開始,到其聲明區(qū)域的結尾。因此潛在作用域比聲明區(qū)域小,因為變了必須定義后才能使用。
這兩個概念通過下圖很好理解,也是編程的常識。

在這里插入圖片描述

在這里插入圖片描述

聲明命名空間和命名空間成員

可以使用如下語法聲明命名空間和空間成員

namespace Jack {
	double a;
	struct b {};
	void f();
}

全局命名空間

如果未在顯式命名空間中聲明某個標識符,則該標識符屬于隱式全局命名空間的一部分。 一般情況下,嘗試避免在全局范圍內(nèi)進行聲明(入口點 Main 函數(shù)除外,它必須位于全局命名空間中)。
全局命名空間可以是用 ::var 來調(diào)用。

不連續(xù)命名空間

即同一個命名空間可以在多個文件中定義,如
file1.cpp

namesapce A {
	int a;
}

file2.cpp

namesapce A {
	int b;
}

在編譯時會將分散在各個文件中的同一個命名空間集合在一起。

嵌套命名空間

命名空間也是可以嵌套的

namespace A {
	namespace B {}
}

using聲明和using編譯指令

using聲明將特定的名稱添加到它所屬的聲明區(qū)域中,例如using A::a;,相當于 Java 中的靜態(tài)導入,而using 編譯指令使名稱空間的所有名稱都可以用,而不需要使用作用于解析符,如 using namespace std;,作用相當于 Java 中的。import java.util.*。這里記錄一下注意點。

using A::pal;
using B::pal; // error declaration conflict
pal = 4;

上述代碼會引起沖突。
一般而言使用using聲明會更安全點。

命名空間別名

命名空間名稱必須是唯一的,這意味著通常它們不應太短。 如果名稱的長度使代碼難以讀取,或在不能使用 using 指令的標頭文件中鍵入枯燥,則可以創(chuàng)建一個命名空間別名作為實際名稱的縮寫。 例如:

namespace a_very_long_namespace_name { class Foo {}; }
namespace AVLNN = a_very_long_namespace_name;
void Bar(AVLNN::Foo foo){ }

綜合代碼示例

#include <iostream>

using namespace std;
namespace A {
    int a = 100;
    namespace B            //嵌套一個命名空間B
    {
        int a = 20;
    }
}

int a = 200;//定義一個全局變量

int main(int argc, char *argv[]) {
    cout << "A::a =" << A::a << endl;
    cout << "A::B::a =" << A::B::a << endl;
    cout << "a =" << a << endl;
    cout << "::a =" << ::a << endl;

    int a = 30;
    cout << "a =" << a << endl;
    cout << "::a =" << ::a << endl;

    return 0;
}

output:

A::a =100
A::B::a =20
a =200
::a =200
a =30
::a =200

總結

到此這篇關于C++中的命名空間詳細介紹的文章就介紹到這了,更多相關C++命名空間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++實現(xiàn)學生成績管理系統(tǒng)

    C++實現(xiàn)學生成績管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)學生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++ boost::asio編程-同步TCP詳解及實例代碼

    C++ boost::asio編程-同步TCP詳解及實例代碼

    這篇文章主要介紹了C++ boost::asio編程-同步TCP詳解及實例代碼的相關資料,需要的朋友可以參考下
    2016-11-11
  • opencv2基于SURF特征提取實現(xiàn)兩張圖像拼接融合

    opencv2基于SURF特征提取實現(xiàn)兩張圖像拼接融合

    這篇文章主要為大家詳細介紹了opencv2基于SURF特征提取實現(xiàn)兩張圖像拼接融合,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++中的異常處理機制詳解

    C++中的異常處理機制詳解

    本文給大家分享的是C++中的異常處理機制。對如何處理異常、基本異常語法、異常保護代碼等進行了探討,推薦給大家。
    2017-04-04
  • C語言繪制曲線圖的示例代碼

    C語言繪制曲線圖的示例代碼

    這篇文章主要介為大家詳細紹了如何使用C語言繪制統(tǒng)計圖中的曲線圖,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • C++&&Opencv實現(xiàn)控制臺字符動畫的方法

    C++&&Opencv實現(xiàn)控制臺字符動畫的方法

    這篇文章主要介紹了C++&&Opencv實現(xiàn)控制臺字符動畫的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Qt控件之QToolButton的使用及示例

    Qt控件之QToolButton的使用及示例

    QToolButton類提供了一個快速訪問命令或選項的按鈕,通常在QToolBar內(nèi)部使用,本文主要介紹了Qt控件之QToolButton的使用及示例,感興趣的可以了解一下
    2023-10-10
  • C++ COM編程之QueryInterface函數(shù)(一)

    C++ COM編程之QueryInterface函數(shù)(一)

    這篇文章主要介紹了C++ COM編程之QueryInterface函數(shù)(一),QueryInterface是組件本身提供對自己查詢的一個接口,需要的朋友可以參考下
    2014-10-10
  • c語言實現(xiàn)http下載器的方法

    c語言實現(xiàn)http下載器的方法

    這篇文章主要介紹了c語言實現(xiàn)http下載器的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • c++實現(xiàn)堆排序的示例代碼

    c++實現(xiàn)堆排序的示例代碼

    本文主要介紹了c++實現(xiàn)堆排序的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02

最新評論