亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳情介紹C++之命名空間

 更新時(shí)間:2021年09月03日 16:05:43   作者:非常規(guī)自我實(shí)現(xiàn)  
這篇文章主要詳情介紹了C++命名空間,命名空間的出現(xiàn)就是為了解決名稱沖突問(wèn)題,對(duì)此感興趣的朋友可以參考下面文章

C++命名空間

1.概述

在c++中,名稱(name)可以是符號(hào)常量、變量、函數(shù)、結(jié)構(gòu)、枚舉、類和對(duì)象等等。工程越大,名稱互相沖突性的可能性越大。另外使用多個(gè)廠商的類庫(kù)時(shí),也可能導(dǎo)致名稱沖突。為了避免,在大規(guī)模程序的設(shè)計(jì)中,以及在程序員使用各種各樣的C++庫(kù)時(shí),這些標(biāo)識(shí)符的命名發(fā)生沖突,標(biāo)準(zhǔn)C++引入關(guān)鍵字namespace(命名空間/名字空間/名稱空間),可以更好地控制標(biāo)識(shí)符的作用域。

因此:命名空間的出現(xiàn)就是為了解決名稱沖突問(wèn)題

2.格式

namespace 空間名稱
{
    變量名稱
    .....
    函數(shù)聲明
    .....
}

3.定義范圍

#include <iostream>
using namespace std;

namespace test#這是正確的命名形式
{
    .....  
}

int main()
{
namespace test01 #這是錯(cuò)誤的命名形式
{
    
}
    ....
}

結(jié)論:命名空間只能在全局范圍內(nèi)定義

4.瀑布式開(kāi)發(fā)格式

命名空間名稱相同就是同一個(gè)命名空間

#include <iostream>
using namespace std;
namespace test
{
 ....    
}
namespace test #名稱相同就是同一個(gè)命名空間
{
    .......
}

int main()
{
    ........
}

5.命名空間的訪問(wèn)方式

5.1空間名::變量名

#include <iostream>
using namespace std;
namespace test
{
    int a = 10;
}
int main()
{
    cout << test::a<<endl;
    
    .....
}    

5.2using namespace 空間名

#include <iostream>
using namespace std;
namespace test
{
    int a = 10;
}
using namespace test;#需要在命名空間定義之后
int main()
{
    cout <<a<<endl;
    
    .....
}    

需要注意的是:

在使用該語(yǔ)法時(shí),需要在命名空間定義之后,否則會(huì)提示找不到。

6.命名空間可以無(wú)限嵌套

#include <iostream>
using namespace std;
namespace test01
{
    namespace test02
    {
        namespace test
        {
            int a = 10;
        }
    }

}

using namespace test01::test02::test;#如果采用第二種方式的話就需要這樣聲明
int main()
{
    cout << a << endl;

}

7.權(quán)限

命名空間不存在私有的概念,都是共有的。

這個(gè)也很好理解,因?yàn)槊臻g的出現(xiàn)就是為了解決名稱沖突的問(wèn)題。僅僅只是解決這個(gè)問(wèn)題而已。

8.匿名命名空間

原則上禁止使用匿名命名空間,出現(xiàn)匿名命名空間這總機(jī)制就是為了解決名稱沖突

在了解上面的基礎(chǔ)之上,我們?cè)賮?lái)講述下面的語(yǔ)法規(guī)則

匿名命名空間中定義的變量等同于全局變量,但是再背顯式調(diào)用的時(shí)候,使用原生全局變量

相信大家看到這句話會(huì)覺(jué)得很絕望,但是呢,編程就是這樣,直接看代碼就對(duì)了。

#include <iostream>
using namespace std;

int a = 10;
namespace #這就是匿名命名空間
{
  int a = 20;
}
int main()
{
    cout << a <<endl;
    .....
}

大家猜一下,上面的結(jié)果是什么?是10 還是 20

結(jié)果是編譯不通過(guò)?。?!提示是:變量a是不明確的符號(hào)

正如上面所說(shuō),匿名空間中定義的變量等同于全局變量,那不就相當(dāng)于定義了兩個(gè)相同名稱的全局變量。那不就重定義了嗎

Attention:C++中不存在變量的定義和聲明

如果要想引用全局變量,那就是如下所示

#include <iostream>
using namespace std;

int a = 10;
namespace #這就是匿名命名空間
{
  int a = 20;
}
int main()
{
    cout << ::a <<endl;
    .....
}

大家猜一下,上面的結(jié)果是什么?是10還是20

結(jié)果是10!??!

正如上面所說(shuō),如果變量a被調(diào)用,則被調(diào)用的是原生全局變量,那就是10。

我們說(shuō)了,匿名命名空間中定義的變量就相當(dāng)于全局變量,意味著如果沒(méi)有定義原生全局變量,那么就可以像調(diào)用原生全局變量一樣調(diào)用匿名空間中的全局變量。

#include <iostream>
using namespace std;

namespace #這就是匿名命名空間
{
  int a = 20;
}
int main()
{
    cout << a <<endl;  #調(diào)用原生全局變量的方式
    .....
}

9.別名

#include <iostream>
using namespace std;

int a = 10;
namespace test
{
  int a = 20;
}
namespace alise_test = test;#這就是給命名空間

int main()
{
    cout << ::a <<endl;
    .....
}

原則上是不推薦給標(biāo)準(zhǔn)命名空間起別名

#include <iostream>
using namespace std;

int a = 10;
namespace test
{
  int a = 20;
}
namespace alise_std = std;#這是不建議的一種做法

int main()
{
    cout << ::a <<endl;
    .....
}

10.編程模型

使用命名空間的時(shí)候,最好還是遵循某種格式。不遵循這種方式也是可以的,對(duì)于我而言,準(zhǔn)許某種框架的目的在于簡(jiǎn)便自己編碼。

namespace test
{
    int a = 0;#變量名的定義
    int add(int a , int b );
}
int test::add(int a , int b )
{
    return a+b; 
}

PS:命名空間中存放的是變量初始化、函數(shù)的聲明、類的聲明等等,而函數(shù)的定義

11.using語(yǔ)法使用

using namespace 空間名;

這個(gè)語(yǔ)句可以在程序中的任何一個(gè)地方使用

#include <iostream>
using namespace std;

namespace test
{
  int a = 20;
}
using namespace test; #test命名空間中的符號(hào)的作用域在該語(yǔ)句之后,該源文件之前
void hello(void)
{
    using namespace test;#test命名空間中的符號(hào)的作用域在該語(yǔ)句之后,函數(shù)體之前
    
}
int main()
{
    cout << a <<endl;
    .....
}

Attention:如果沒(méi)有引用,命名空間里的代碼塊就不會(huì)被編譯

如果命名空間中有大量的符號(hào),采用上面一種方法就不太妥當(dāng),因?yàn)閷?shí)際使用到的符號(hào)也就那么幾個(gè)。

#include <iostream>
using namespace std;

namespace test
{
  int a = 20;
}
using namespace test::a; #只使用test命名空間中的a變量
int main()
{
    cout << a <<endl;
    .....
}

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

相關(guān)文章

  • VScode+cuda編程常見(jiàn)環(huán)境問(wèn)題的解決

    VScode+cuda編程常見(jiàn)環(huán)境問(wèn)題的解決

    本文主要介紹了VScode+cuda編程常見(jiàn)環(huán)境問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C語(yǔ)言實(shí)現(xiàn)與電腦玩剪刀石頭布游戲

    C語(yǔ)言實(shí)現(xiàn)與電腦玩剪刀石頭布游戲

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)C語(yǔ)言實(shí)現(xiàn)和電腦玩剪刀石頭布游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-11-11
  • C語(yǔ)言字符串函數(shù)介紹與模擬實(shí)現(xiàn)詳解

    C語(yǔ)言字符串函數(shù)介紹與模擬實(shí)現(xiàn)詳解

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)字符串操作函數(shù)的實(shí)例的相關(guān)資料,開(kāi)發(fā)程序的時(shí)候經(jīng)常使用到一些字符串函數(shù),例如求字符串長(zhǎng)度,拷貝字符串……,需要的朋友可以參考下
    2021-09-09
  • C語(yǔ)言中炫酷的文件操作實(shí)例詳解

    C語(yǔ)言中炫酷的文件操作實(shí)例詳解

    內(nèi)存中的數(shù)據(jù)都是暫時(shí)的,當(dāng)程序結(jié)束時(shí),它們都將丟失,為了永久性的保存大量的數(shù)據(jù),C語(yǔ)言提供了對(duì)文件的操作,這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中文件操作的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • C++ 反射機(jī)制詳解及實(shí)例代碼

    C++ 反射機(jī)制詳解及實(shí)例代碼

    這篇文章主要介紹了C++ 反射機(jī)制詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 淺談CMake配置OpenCV 時(shí)靜態(tài)鏈接與動(dòng)態(tài)鏈接的選擇

    淺談CMake配置OpenCV 時(shí)靜態(tài)鏈接與動(dòng)態(tài)鏈接的選擇

    下面小編就為大家?guī)?lái)一篇淺談CMake配置OpenCV 時(shí)靜態(tài)鏈接與動(dòng)態(tài)鏈接的選擇。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C語(yǔ)言實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì)

    C語(yǔ)言實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • MFC之ComboBox控件用法實(shí)例教程

    MFC之ComboBox控件用法實(shí)例教程

    這篇文章主要介紹了MFC之ComboBox控件用法,包括了ComboBox控件常見(jiàn)的各類用法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • C/C++最短路徑算法之迪杰斯特拉Dijkstra的實(shí)現(xiàn)詳解

    C/C++最短路徑算法之迪杰斯特拉Dijkstra的實(shí)現(xiàn)詳解

    Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的最短路徑。本文將詳解該算法的圖解與實(shí)現(xiàn),需要的可以參考一下
    2022-07-07
  • QT實(shí)現(xiàn)串口通信的完整步驟

    QT實(shí)現(xiàn)串口通信的完整步驟

    如果用qt寫程序作為上位機(jī),然后通過(guò)和usb和下位機(jī)通信的時(shí)候,就需要用到qt中的串口通信了,下面這篇文章主要給大家介紹了關(guān)于QT實(shí)現(xiàn)串口通信的相關(guān)資料,需要的朋友可以參考下
    2023-02-02

最新評(píng)論