最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ namespace案例詳解

 更新時間:2021年08月19日 10:19:36   作者:福桐  
這篇文章主要介紹了C++ namespace案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

在C++語言編寫的程序中,變量和函數(shù)等的作用范圍是有一定限制的。比如,在函數(shù)體中定義的一個臨時變量就不可以在函數(shù)體外使用。為了解決變量和函數(shù)等的作用范圍,在C++語言中引入了名空間的概念,并增加了關(guān)鍵字namespace和using

在一個名空間中可以定義一組變量和函數(shù),這些變量和函數(shù)的作用范圍一致,可以將這些變量和函數(shù)稱為這個名空間的成員。

通過名空間,可以在同一個文件中使用相同的變量名或函數(shù)名,只要它們屬于不同的名空間。另外,名空間可以使得代碼操作具有相同名字但屬于不同庫的變量。而且,名空間也可以提高C語言與C++語言的兼容性。

下面通過例程說明關(guān)鍵字namespace的用法。

#include <conio.h>
#include <iostream.h>
namespace car // 名空間的定義
{
  int model;
  int length;
  int width;
}

namespace plane
{
  int model;
  namespace size // 名空間的嵌套
  {
    int length;
    int width;
  }
}

namespace car // 添加名空間的成員
{
  char * name;
}

namespace c=car; // 定義名空間的別名
int Time; // 外部變量屬于全局名空間

void main()
{
  car::length=3;
  // 下面一句錯誤,故屏蔽掉
  // width=2; // 對于非全局變量和當(dāng)前有效臨時變量應(yīng)該指定名空間
  plane::size::length=70;
  cout<<"the length of plane is "<<plane::size::length<<"m."<<endl;
  cout<<"the length of car is "<<car::length<<"m."<<endl;
  // 使用名空間的別名
  cout<<"the length of c is "<<c::length<<"m."<<endl;
  int Time=1996; // 臨時變量,應(yīng)區(qū)別于全局變量
  ::Time=1997;
  cout<<"Temp Time is "<<Time<<endl;
  cout<<"Outer Time is "<<::Time<<endl;
  // 使用關(guān)鍵字using
  using namespace plane;
  model=202;
  size::length=93;
  cout<<model<<endl;
  cout<<size::length<<endl;
  getch();
}

運(yùn)行結(jié)果:

the length of plane is 70m.
the length of car is 3m.
the length of c is 3m.
Temp Time is 1996
Outer Time is 1997

說明:

&#8226; 從上面可以看出,名空間定義了一組變量和函數(shù),它們具有相同的作用范圍。對于不同的
名空間,可以定義相同的變量名或函數(shù)名,在使用的時候,只要在變量名或函數(shù)名前區(qū)分
開不同的名空間就可以了。
&#8226; 名空間可以被嵌套定義,使用時要逐級對成員用名空間限定符: :來引用。
&#8226; 系統(tǒng)默認(rèn)有一個全局名空間,它包含了所有的外部變量。這個名空間沒有名字,引用這個
名空間里的變量時要使用名空間限定符: :,前面沒有名字。在不使用名空間的情況下,我
們知道,不可以在不同文件中定義相同名字的外部變量,這是因為它們屬于同一個全局名
空間,名字不可以重復(fù)。
&#8226; 可以給名空間取一個別名。一般別名是一個比較短的名字,來簡化編程。
&#8226; 在原有定義好的名空間的基礎(chǔ)上,隨時可以往里增加成員。

<<using>>

在前面的例程中可以看到,為了使用時的方便,又引入了關(guān)鍵字using。利用using聲明可以在引用名空間成員時不必使用名空間限定符::。此外,關(guān)鍵字namespace和using的使用,對函數(shù)重載有一定的影響。

下面通過例程進(jìn)行具體說明。

#include <conio.h>
#include <iostream.h>
namespace car // 名空間的定義
{
  void ShowLength(double len) // 參數(shù)類型為d o u b l e
  {
    cout<<"in car namespace: "<<len<<endl;
  }
}

namespace plane // 名空間的定義
{
  void ShowLength(int len) // 參數(shù)類型為i n t
  { 
    cout<<"in plane namespace: "<<len<<endl;
  }
}

void main()
{
  using namespace car;
  ShowLength(3);
  ShowLength(3.8);
  using namespace plane;
  ShowLength(93);
  ShowLength(93.75);
  getch();
}

運(yùn)行結(jié)果:

in car namespace: 3
in car namespace: 3.8
in plane namespace: 93
in car namespace: 93.75

說明:
如果沒有名空間的干擾,函數(shù)重載時選擇規(guī)則將是非常簡單。只要實(shí)參是double類型,則調(diào)用的是前面的函數(shù);如果實(shí)參是int類型,則調(diào)用后面的函數(shù)。但是由于名空間的參與,就出現(xiàn)了上面的運(yùn)行結(jié)果。所以在編程的時候一定要注意名空間對函數(shù)重載的影響。

    應(yīng)注意:調(diào)用函數(shù)時,如果實(shí)參和形參的數(shù)據(jù)類型實(shí)在沒有辦法完全匹配,可能會對實(shí)參進(jìn)行適當(dāng)?shù)臄?shù)據(jù)類型轉(zhuǎn)換。比如,將char類型轉(zhuǎn)換為int類型,或進(jìn)一步將int類型轉(zhuǎn)換為double類型。這種是將數(shù)據(jù)類型從簡單往復(fù)雜轉(zhuǎn)換,一般不會丟失信息。另外一種轉(zhuǎn)換是反過來,將double類型轉(zhuǎn)換為int類型,或進(jìn)一步將int類型轉(zhuǎn)換為char類型。這種是將數(shù)據(jù)類型從復(fù)雜往簡單轉(zhuǎn)換,可能會丟失部分信息。在調(diào)用函數(shù)的時候,不同的情況下,C++對上述兩種轉(zhuǎn)換的優(yōu)先級是不同的。當(dāng)引入了名空間后,則參與了上述優(yōu)先級順序的分配。

using namespace std之后,就省去了std::,可以直接引用std空間里面的函數(shù)和變量。

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

相關(guān)文章

  • 類成員函數(shù)的重載、覆蓋與隱藏之間的區(qū)別總結(jié)

    類成員函數(shù)的重載、覆蓋與隱藏之間的區(qū)別總結(jié)

    以下是對類成員函數(shù)的重載、覆蓋與隱藏之間的區(qū)別進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友可以過來參考下。希望對大家有所幫助
    2013-10-10
  • 使用Qt實(shí)現(xiàn)監(jiān)聽網(wǎng)頁是否響應(yīng)并導(dǎo)出Excel表

    使用Qt實(shí)現(xiàn)監(jiān)聽網(wǎng)頁是否響應(yīng)并導(dǎo)出Excel表

    Qt導(dǎo)出數(shù)據(jù)到excel,方法有很多,下面這篇文章主要給大家介紹了關(guān)于使用Qt實(shí)現(xiàn)監(jiān)聽網(wǎng)頁是否響應(yīng)并導(dǎo)出Excel表的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • C++面試題之結(jié)構(gòu)體內(nèi)存對齊計算問題總結(jié)大全

    C++面試題之結(jié)構(gòu)體內(nèi)存對齊計算問題總結(jié)大全

    這篇文章主要給大家總結(jié)了關(guān)于C++面試題中結(jié)構(gòu)體內(nèi)存對齊計算問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),通過這些介紹的內(nèi)容對大家在面試C++工作的時候,會有一定的參考幫助,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • OpenCV選擇圖像中矩形區(qū)域并保存

    OpenCV選擇圖像中矩形區(qū)域并保存

    這篇文章主要為大家詳細(xì)介紹了OpenCV選擇圖像中矩形區(qū)域并保存的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 詳解c++ atomic原子編程中的Memory Order

    詳解c++ atomic原子編程中的Memory Order

    在多核編程中,我們使用內(nèi)核對象【如:事件對象(Event)、互斥量對象(Mutex,或互斥體對象)、信號量對象(Semaphore)等】來避免多個線程修改同一個數(shù)據(jù)時產(chǎn)生的競爭條件。本文將詳細(xì)介紹c++ atomic原子編程中的Memory Order。
    2021-06-06
  • C++哈希表之線性探測法實(shí)現(xiàn)詳解

    C++哈希表之線性探測法實(shí)現(xiàn)詳解

    線性探測法的優(yōu)點(diǎn):只要散列表未滿,總能找到一個不沖突的散列地址;缺點(diǎn):每個產(chǎn)生沖突的記錄被散列到離沖突最近的空地址上,從而又增加了更多的沖突機(jī)會
    2022-05-05
  • C語言實(shí)現(xiàn)獲取文件大小與創(chuàng)建修改時間

    C語言實(shí)現(xiàn)獲取文件大小與創(chuàng)建修改時間

    這篇文章主要為大家詳細(xì)介紹了如何通過C語言實(shí)現(xiàn)獲取文件大小、創(chuàng)建時間與修改時間,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • C語言實(shí)現(xiàn)三子棋實(shí)例代碼

    C語言實(shí)現(xiàn)三子棋實(shí)例代碼

    大家好,本篇文章主要講的是C語言實(shí)現(xiàn)三子棋實(shí)例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • c++中new和delete操作符用法

    c++中new和delete操作符用法

    c++中new和delete運(yùn)算符是用于動態(tài)分配和撤銷內(nèi)存的運(yùn)算符,下面是示例,大家參考使用吧
    2014-04-04
  • C++ 輸入scanf()和輸出printf()的操作

    C++ 輸入scanf()和輸出printf()的操作

    這篇文章主要介紹了C++ 輸入scanf()和輸出printf()的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

英山县| 新河县| 许昌县| 栖霞市| 临城县| 信阳市| 兰州市| 枞阳县| 焉耆| 沙雅县| 资溪县| 昌宁县| 岢岚县| 南丰县| 咸丰县| 罗田县| 鹿泉市| 手游| 五常市| 新沂市| 富裕县| 绥滨县| 桐城市| 通山县| 南昌县| 兰西县| 桃园县| 吉隆县| 六枝特区| 垣曲县| 邯郸市| 略阳县| 大埔县| 铁力市| 洱源县| 通许县| 邯郸县| 郁南县| 沈丘县| 酉阳| 菏泽市|