什么是命名空間?為什么要寫using namespace std;這句話呢?
這是C++新引入的一個機制,主要是為了解決多個模塊間命名沖突的問題,就像現(xiàn)實生活中兩個人重名一個道理。C++把相同的名字都放到不同的空間里,來防止名字的沖突。
例如標準C++庫提供的對象都存放在std這個標準名字空中,比如cin、cout、endl,所以我們會看到在C++程序中都會有using namespace std;這句話了,如程序:
#include<iostream> using namespace std; int main() { cout<<"Nice to meet you!"<<endl; return 0; }
程序用到cout和endl則必須提前告知使用std這個命名空間,除此以外,還有另外兩種寫法。
第二種:用域限定符::來逐個制定,剛才的代碼還可以寫成:
#include<iostream> int main() { std::cout<<"Nice to meet you!"<<std::endl; return 0; }
看到了嗎?cout和endl前面分別用std::指明,表示來自std。
第三種:用using和域限定符一起制定用哪些名字,如代碼:
#include<iostream> using std::cout; using std::endl; int main() { cout<<"Nice to meet you!"<<endl; return 0; }
看到了嗎?在前面先用using對具體的名字進行聲明也可以。
以上三種,大家用哪種都可以,為今后統(tǒng)一方便,我們教程中統(tǒng)一采用第一種寫法。
值得一提的是,其實早期的C++標準是沒有命名空間這個概念的,頭文件包含也和C一樣,都是帶.h后綴的。只是新標準中使用不帶.h的頭文件包含時,必須要聲明命名空間,并且包含頭文件在前,聲明使用的名字空間在后。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導(dǎo)課程