開發(fā)網(wǎng)站通過第三方微信認(rèn)證登錄開發(fā)費(fèi)用北京seo運(yùn)營(yíng)推廣
在我們接觸C++之前,C語(yǔ)言中有時(shí)候會(huì)有使用全局變量,全局變量在使用過程中可能會(huì)發(fā)生沖突,這個(gè)沖突有時(shí)會(huì)是我們與庫(kù)之間的沖突,有時(shí)又會(huì)是我們自己定義的之間的沖突,那么這時(shí)候命名空間的出現(xiàn)將很好的解決這個(gè)問題,下面我們來(lái)學(xué)習(xí)一下這個(gè)知識(shí)點(diǎn)
命名空間我們從這個(gè)定義的名字就不難看出,這是將標(biāo)識(shí)符的名稱進(jìn)行本地化,也就是為這些變量建立一個(gè)域,來(lái)限制其作用的空間,而namespace關(guān)鍵字就是針對(duì)這一情況
#include <stdio.h>
#include <stdlib.h>
int rand = 100;int main()
{printf("%d\n", rand);return 0;
}
//rand是一個(gè)函數(shù),而我們?cè)谥骱瘮?shù)外又定義了rand變量為100,這時(shí)計(jì)算機(jī)不知道使用哪個(gè)
命名空間的定義
? ? ? ? 首先使用關(guān)鍵字namespace后面跟命名空間stu,然后跟一對(duì)大括號(hào)'{ }',而{}中的即為命名空間s的成員,命名空間中可以定義變量、函數(shù)、類型;
? ? ? ? 同時(shí)命名空間也是可以嵌套的
//命名空間內(nèi)可以定義變量、函數(shù)、類型namespace stu
{int a;int max(int num1,int num2){return num1>num2?num1:num2;}struct student{char name[6];int age;}
}//命名空間可以嵌套定義
namespace my_std
{int num3;namespace stu{int a;int max(int num1,int num2){return num1>num2?num1:num2;}struct student{char name[6];int age;}}
}//命名空間是可以存在多個(gè)相同名字的命名空間的,編譯器最后會(huì)合成同一個(gè)
namespace s1
{int a;int b;
}
namespace s1
{int c;int d;
}//編譯器合成后
namespace s1
{int a;int b;int c;int d;
}
注意:一個(gè)命名空間就定義了一個(gè)新的作用域,命名空間中的所有內(nèi)容都局限于該命名空間中
當(dāng)我們展開一個(gè)命名空間時(shí),也就意味著將該空間內(nèi)的內(nèi)容放在了全局中,這也是我們經(jīng)常見到有些代碼一開始就寫上using namespace std; 這句意味著將std標(biāo)準(zhǔn)庫(kù)內(nèi)的內(nèi)容展開,我們?cè)谑褂脦?kù)里的例如cout時(shí)就可以直接使用,否則我們則需要這樣寫std::cout。當(dāng)然我們也可以指定展開例如:using std::cout;這樣只需要在開頭寫上后面都可以正常使用。
?輸入、輸出? ? ? ?
? ? ? ? 在C中我們使用scanf()與printf()來(lái)實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出,在C++中我們使用cin和cout來(lái)實(shí)現(xiàn)輸入輸出,例如
#include <iostream>
using namespaced std;
//using std::cin; 只使用標(biāo)準(zhǔn)庫(kù)中的cinint main()
{int x;cin >> x;cout << x <<endl;
}
在這里輸入和輸出“可以自動(dòng)識(shí)別類型”,當(dāng)然這里自動(dòng)識(shí)別類型是經(jīng)過重載實(shí)現(xiàn)的,這個(gè)在后期我們會(huì)進(jìn)行學(xué)習(xí)。
缺省參數(shù)
? ? ? ? 首先缺省參數(shù)必須是常量或全局變量,C++允許在同一作用域中聲明幾個(gè)功能類似的同名函數(shù),這些同名函數(shù)的 形參列表(參數(shù)個(gè)數(shù)、類型、類型順序)不同,返回值沒有要求。
?
?注意半缺省:從右往左缺省參數(shù)
? ? ? ? ? ? ? ? ? ? ? 從左往右傳實(shí)參
當(dāng)在傳實(shí)參的時(shí)候不傳使用默認(rèn)參數(shù),當(dāng)你傳參時(shí),則用傳過去的參數(shù)。
另外函數(shù)缺省參數(shù)寫在聲明中。
? ? ?