吹毛求疵-命名空間要解決的問題

代碼:

以下爲正確的代碼,驗證了局部變量優先於命名空間中同名的實體。

#include <iostream>

using namespace std;

int main()
{
    char endl[]="abc";
    cout<<endl;
    return 0;
}



測試內容:

驗證命名空間要解決的問題--命名空間解決標識符在不同庫(我理解爲不同的命名空間)以及程序全局變量中命名衝突問題

因爲在做老賀的自測題時感覺一眼看上去是錯的選項結果對了,很莫名其妙,因爲自認爲已經掌握命名空間。

測試內容如下:

1.測試全局變量endl與命名空間中同名的endl是否會在主函數內衝突

#include <iostream>


using namespace std;
char endl[]="abc";
int main()
{


    cout<<endl;
    return 0;
}

2.測試命名空間my與std中同名實體endl在主函數內是否會衝突

#include <iostream>


using namespace std;
namespace my
{
    char endl[]="abc";
}
int main()
{
    using namespace my;
    cout<<endl;
    return 0;
}



3.測試局部變量與命名空間中同名的實體在主函數內是否會衝突,結果是不會,開頭的代碼已給出。三個測試結果截圖在下面。

結果:

1.測試全局變量endl與命名空間中同名的endl是否會在主函數內衝突,結果是會衝突,系統報錯


2.測試命名空間my與std中同名實體endl在主函數內是否會衝突


3.測試局部變量與命名空間中同名的實體在主函數內是否會衝突,結果是不會,開頭的代碼已給出。


小結:

感謝老賀的自測,還有今天的好心情!

讓我有耐心做這些事情。

問題雖小,進一步理解了一下命名空間。

繼續加油~~~


發佈了126 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章