代碼:
以下爲正確的代碼,驗證了局部變量優先於命名空間中同名的實體。
#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.測試局部變量與命名空間中同名的實體在主函數內是否會衝突,結果是不會,開頭的代碼已給出。
小結:
感謝老賀的自測,還有今天的好心情!
讓我有耐心做這些事情。
問題雖小,進一步理解了一下命名空間。
繼續加油~~~