C++ namespace淺析


有一些C語言的基礎,突然想看看C++,在Codeblocks上新建工程的時候會生成一個打印"Hello World"的程序,和C語言些許不同。其中最突出的就是"using
namespace std;"這行。

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

namespace是C++新加的一個概念,中文名為命名空間,相對來說更便捷地解決了函數重名和變量命名的問題。其一般定義如下形式:namespace 命名空間名{變量聲明或函數聲明}。一般使用命名空間中的變量或函數則通過"命名空間名::變量或函數"來使用,如下面代碼所示。可能有人會問命名空間存在的意義在哪,自己寫的程序完全可以規避命名相同的情況,不過假如你調用其他人所寫的程序則有很大的可能有變量重名以及函數重名的問題,然而命名空間的撞車概率則相對較小,顯然。

再看代碼中的程序第二行為"using namespace std;",這個using又是做什么的。我們知道#include<iostream>是引入iostream文件中的代碼,其中定義了std命名空間,而cout,endl則聲明在std命名空間內,假如不使用using關鍵字,cout和endl則需要寫成std::cout以及std::endl,而cout以及endl都是我們需要經常使用的,這就增加了大量的代碼量,通過using則可以在主函數中直接調用命名空間中的變量和函數。但是命名空間之間變量命名有沖突也能使用using關鍵字,但是在使用變量的時候仍需在前面加上命名空間以示區別。

#include <iostream>
using namespace std;

namespace A
{
  int x=0;
  void function(){};            
}

namespace B
{
  int x=1;
  void function(){};
}
using namespace A;
using namespace B;
int main(){
  cout << A::x << endl;
  cout << B::x << endl;
  return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM