日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

        歡迎訪問 生活随笔!

        生活随笔

        當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

        编程问答

        命名空间 namespace

        發布時間:2025/3/15 编程问答 41 豆豆
        生活随笔 收集整理的這篇文章主要介紹了 命名空间 namespace 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

          C++中有兩個比較基礎又重要的概念,一個是作用域,另一個是生存期。作用域顧名思義就是作用的區域,分為函數原型作用域、局部作用域、類作用域和命名空間作用域,它們的作用范圍按此順序變大。生存期顧名思義就是變量從創建到消亡的這段時間,分為靜態生存期和動態生存期。如果變量的生存期與系統程序的運行期相同,則該變量就具有靜態的生存期。在所有大括號對之外定義的變量具有靜態生存期,命名空間作用域都在大括號外,所以其變量具有靜態生存期。在局部作用域中用static聲明的變量也具有靜態生存期。除了這兩種情況之外的變量都具有動態生存期。

          命名空間建立了一些相互隔離的作用域,且這些作用域里的變量都具有靜態生存期。

          namespace產生的原因

          C++中采用的是單一的全局變量命名空間。在這單一的空間中,如果有兩個變量或函數的名字完全相同,就會出現沖突。命名空間就是ANSIC++引入的可以由用戶命名的作用域,用來處理程序中常見的同名沖突。

          如果在頭文件head1.h定義了全局變量string user_name;然后再在頭文件head2.h也定義了string user_name,或者調用的某個庫中已經定義了這個全局變量,系統在編譯的時候就會報重復定義的錯誤。這個時候可以用extem?string user_name來解決編譯問題,但這個時候string user_name的作用域就從head1.h擴展到了head2.h,也許這并不是我們想要的情況,我們或許想要得到的是兩個不同的全局變量,只是名字一樣而已。

          namespace使用

          使用時先把變量定義在兩個不同的命名空間中。

          namespace XXX

          {

            string user_name;

          }

        ?

           namespace YYY

          {

            string user_name;

          }

          然后通過命名空間限定讀取:

          XXX::user_name="asd";?

          YYY::user_name="qwe";

        ?

          一個命名空間中可以包括:變量(可以帶有初始化)常量;(可以是定義或聲明)結構體;類;模板和命名空間(在一個命名空間中又定義一個命名空間,即嵌套的命名空間)。但命名空間中不可以包含命令行,如#include,不然會報錯。

          使用時可以包含整個命名空間using namespace XXX; 也可以只包含其中的某個變量using XXX::user_name; 這樣可以減少編譯的大小。

        轉載于:https://www.cnblogs.com/zhengxinwei/p/7471529.html

        總結

        以上是生活随笔為你收集整理的命名空间 namespace的全部內容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。