一、命名空間
用c++語言編寫大型軟體時,較多的變數和函式以及其他命名很可能會發生重複的狀況,命名空間恰好解決了這一問題,使用命名空間對名稱進行劃分,不容易混淆名稱。
c++標準庫的命名空間為std,以標準庫命名空間為例,看一下命名空間的三種使用方法。
1、用using和namespace關鍵字直接引入命名空間
using
namespace std;
2、只引入命名空間中的要用的東西
using std::cout;
3、在使用的時候用命名空間及限定符限定
std::cout<<
"hello word."
<
namespace name //定義了乙個名稱為name的命名空間
二、預設引數
c++允許在定義函式的時候為形參賦予乙個預設值,即預設引數,在呼叫函式時,給了引數就用給的引數,沒有給引數就用預設引數,其中有幾個注意點。
1、要麼給所有引數都給乙個預設引數,為全預設,如果要半預設,必須是從後往前預設,也就是說乙個引數有預設值,其後邊的引數必須有預設值,原因是在呼叫函式時給形參賦值是從右往左賦值的。
2、預設引數在函式定義和宣告**現都可以,但是只能出現一次,不能同時出現。
3、預設值必須是常量或全域性變數。
三、函式過載
函式過載是指同一作用域內兩個函式名字相同,引數列表不同(型別或數量),在呼叫函式時根據實參來匹配適合的函式,返回值並不影響函式過載。
c++能夠實現函式過載的原理是編譯器在編譯期間會對函式的名稱根據其引數重新命名,使得過載的函式在編譯完成時其名稱也是唯一的。不同的編譯器對函式的重新命名有不同的方法。
四、引用
引用相當於給乙個變數取了乙個別名,和原變數公用一塊記憶體空間,對引用的操作相當於直接對原變數的操作。
引用和指標的區別:
1、引用只是給變數取了乙個別名,可以直接訪問變數,而變數是開闢一塊記憶體空間存放變數位址,通過*運算子間接訪問變數,
2.引用在定義的時候必須初始化,而且程式執行過程中不能改變為其他變數的引用,指標可以不初始化,而且可以改變其指向。
3、用引用作為函式引數或者返回值,避免了引數或者返回值的拷貝,更高效,指標在一定意義上也能起到這一作用,但是最少還是得拷貝指標大小空間。
4、在底層實現上,引用也是按照指標的方式來實現的。
常引用即用const修飾的引用,不能用常引用來修改它所引用的變數值,需要注意的是引用常量必須用常引用.
五、內聯函式
內聯函式是在編譯時在呼叫處將函式展開,換一句話說就是對函式**進行相應的替換後,直接放在呼叫處,我們可以使用inline
關鍵字來修飾乙個函式,建議編譯器將此函式置位內聯函式,內聯函式適用於**短小,使用頻率高,沒有複雜語法的函式。
六、auto關鍵字
將乙個變數指定為auto
,說明這個變數型別是自動型別,在編譯時有編譯器自動推導其型別,需要注意的點如下:
1、auto定義變數必須初始化,因為編譯器需要通過初始化的字面常量來確定變數型別。
2、在宣告引用時,要想使用auto,為了和普通變數及指標變數區分,必須使用&,即auto & b = a
3、auto不能用於函式的引數,因為在編譯階段無法知道其型別,
4、auto不能直接用於陣列的定義,
七、基於範圍的for迴圈
void
testfor()
;for
(auto
& e : array)
cout << e <<
" ";
cout << endl;
}
八、空指標
c++指標賦空的時候使用nullptr
,因為null
不是正正意義上的空,而是0.
python入門知識點
人生苦短,我用python。廢話不多說,記錄一下python基礎知識點。lambda函式 lambda 引數 返回值 map函式 map function,引數序列 將制定序列中所有元素作為引數呼叫制定函式 filter函式 filter function,引數序列 將制定序列中所有元素作為引數呼叫...
matlab入門知識點
一.常見通用命令 二 matlab語言基礎 2.1變數及其賦值 在matlab中不需要宣告變數型別。變數名規則 變數名只能由字母 數字和下劃線組成,且必須是字母開頭。字母區分大小寫。變數名長度限制,詳見各版本說明。關鍵字不能作為變數名。2.2 注釋 2.3 向量及其運算 2.3.1 向量的生成 直接...
正則入門知識點
正則分組 正則匹配模式 貪婪 非貪婪與獨佔模式 校驗資料的有效性 查詢符合要求的文字內容 對文字進行切歌,替換等操作 1.任意字元 換行除外 2.d 任意數字 d 任意非數字 3.w 任意字母數字下劃線 w 任意非字母數字下劃線 4.s 任意空白符 s 任意非空白符1.r 回車符 2.n 換行符 3...