小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

關(guān)于“using namespace std”

 My鏡像站 2011-12-26
對于一個存在著標準輸入輸出的C++控制臺程序,一般會在#include <iostream>的下一行發(fā)現(xiàn)一句話,using namespace std。這句話其實就表示了所有的標準庫函數(shù)都在標準命名空間std中進行了定義。其作用就在于避免發(fā)生重命名的問題。
  1. 關(guān)于namespace
  C++引入了命名空間namespace主要解決了多個程序員在編寫同一個項目中可能出現(xiàn)的函數(shù)等重名的現(xiàn)象。解決方法就是加上自己的命名空間。比如下面的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
namespace ZhangSan
{
    int a=10; //張三把10賦值給了變量a
}
namespace LiSi
{
    int a=5; //李四把10賦值給了變量a
}
 
void main()
{
    int a=1;
    cout<<"張三定義的a="<<ZhangSan::a<<endl;
    cout<<"李四定義的a="<<LiSi::a<<endl;
    cout<<"主函數(shù)定義的a="<<a<<endl;   
}
  上例中的“ZhangSan::a”和“LiSi::a”分別表示了調(diào)用張三命名空間中的a變量和李四命名空間中的a變量。這樣的好處顯而易見,那就是雖然張三和李四這兩個程序員都定義了一個變量a,但是并不會出現(xiàn)重名的危險。
運行結(jié)果為:
 
  
  2. 關(guān)于using namespace *
  顧名思義,using namespace * 就表示釋放命名空間* 中間的東西。好處在于我們在程序里面就不用在每個函數(shù)的頭上都加上*::來調(diào)用。比如說如果上面那個程序,如果我們不在using namespace std,那么我們就需要在主函數(shù)中的標準輸出流cout函數(shù)前面加上std,寫成
 
std::cout
表示調(diào)用std空間里面的標準輸出流cout。但是有些時候我們也不能圖這個方便,比如說如果在主函數(shù)中將命名空間ZhangSan和LiSi的中所定義的變量釋放出來,如下例1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
namespace ZhangSan
{
    int a=10; //張三把10賦值給了變量a
}
namespace LiSi
{
    int a=5; //李四把10賦值給了變量a
}
 
void main()
{
    int a=1;
    using namespace ZhangSan;
    using namespace LiSi;
    cout<<a<<endl;
}
這個程序輸出結(jié)果為:
如果我們在主函數(shù)中把 int a=1給刪除,如下例2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
namespace ZhangSan
{
    int a=10; //張三把10賦值給了變量a
}
namespace LiSi
{
    int a=5; //李四把10賦值給了變量a
}
 
void main()
{
    using namespace ZhangSan;
    using namespace LiSi;
    cout<<a<<endl;
}
會發(fā)現(xiàn)根本就不會通過編譯,輸出的錯誤信息為:
error C2872: “a”: 不明確的符號
  分析可以看出,上面這個例2會引起歧義。因為ZhangSan中間的a被釋放出來,同理LiSi中間的a也被釋放出來了。那么編譯器就不知 道到底哪個才是需要輸出的a,自然就會引起歧義了。同理,在例1中,編譯器同樣不知道到底哪個才是需要輸出的a,于是它只采用了主函數(shù)中自己定義的a,這 樣程序也不會報錯,但是只會輸出1,自然結(jié)果就如上面的圖所示了。
 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多