c++命名空間---namespace

來源:互聯網
上載者:User

標籤:直接   nbsp   png   分享圖片   system   comm   相同   \n   image   

C++ 命名空間

 C++ 應用程式中。例如,您可能會寫一個名為 func() 的函數,在另一個可用的庫中也存在一個相同的函數 func()。這樣,編譯器就無法判斷您所使用的是哪一個 func() 函數。

因此,引入了命名空間這個概念,專門用於解決上面的問題,它可作為附加資訊來區分不同庫中相同名稱的函數、類、變數等。使用了命名空間即定義了上下文。本質上,命名空間就是定義了一個範圍。

定義命名空間

命名空間的定義使用關鍵字 namespace,後跟命名空間的名稱,如下所示:

為了調用帶有命名空間的函數或變數,需要在前面加上命名空間的名稱,如下所示:

name::code; // code 可以是變數或函數,name是命名空間的名字

eg:

#define _CRT_SECURE_NO_WARNINGS#include<iostream>namespace space_test1{    typedef int T;    int a = 1000;    void fuc(void)    {        std::cout << "I am space_test1 \n";    }}namespace space_test2{    typedef double T;    int a = 100;    void fuc(void)    {        std::cout << "I am space_test2\n";    }}int main(){    //通過命名空間的不同,可以使用相同的函數,變數,類型    space_test2::T high = 1.1;    space_test1::T age = 25;    space_test2::fuc();    space_test1::fuc();    std::cout << "high=" << high << std::endl;    std::cout << "age="<< age<<std::endl;    std::cout << "space_test1::a=" << space_test1::a << std::endl;    std::cout << "space_test2::a=" << space_test2::a << std::endl;    system("pause");    return 0;}
using 指令

您可以使用 using namespace 指令,這樣在使用命名空間時就可以不用在前面加上命名空間的名稱。這個指令會告訴編譯器,後續的代碼將使用指定的命名空間中的名稱。

 

為什麼我們不推薦using namespace  ...的做法:

 

命名空間使用這樣直接的聲明,破壞了它想要解決的同名函數,變數,類等問題,雖然在不引起二義性的情況下,我們會方便一些,因為可以少輸入幾個字元,但是,在不能保證是否有相同函數,變數,類的情況下,還是使用命名空間首碼更合適。

c++命名空間---namespace

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.