C/C++基礎知識(隨時更新)

2020-08-13 12:35:38

1.帶參數的main()函數,即main(int argc,charargv[]),argc是不需要輸入的,編譯器自動推測,argv是輸入char,輸入幾個char第一個參數的值就是多少再加1。注意:預設數組裏第0個元素是程式全名。
2.char型本身是字元型,比如‘a’等等,char
纔是字串,字串本身是地址,直到 \0 就結束。
3.對於帶指針的類。拷貝構造和拷貝複製都需要,拷貝構造其實就是過載建構函式,拷貝複製就是過載=運算子。解構也要寫。
4.static指類獨有的,不要this指針就可存取。
5.iterator class可以有迭代器的功能,需要自己打造,過載+ ++ = * 等運算子。
6.friend 其實就是想存取類中的private成員,寫一個return函數也可以達到要求。
7.函數物件又叫仿函數,實際是個類,對()過載了,優點是帶狀態,可以擁有不同狀態。
8.typedef 只是對已有的型別別名定義,不產生新的型別。#define只是在預處理的時候對程式碼簡單替換。兩者並沒有什麼聯繫。
typedef int arr[3]; //arr的型別是int[3]
arr a; //typedef只有一塊也行呀,不一定非要有兩塊。
9.派生類構造:先基礎類別構造,再派生類構造,解構相反。
10.protected的成員可以被派生類直接存取
11.凡是基礎類別有一個或者多個虛擬函式,解構函式應該宣告爲虛擬函式(不建議是純虛擬函式),不然會呼叫基礎類別的解構。非虛擬函式在編譯時就解析。
12.(重要)在C++中,唯有用基礎類別的pointer和reference才能 纔能支援物件導向程式設計概念。Essentisl c++p163
13.stl容器中list自帶sort()
14,泛型程式設計:將數據和方法分開
15.模板:函數模板,類別範本,成員模板
16.靜態數據成員可以被非靜態成員函數存取。但靜態成員函數只能存取靜態數據成員。
17.對於陣列,陣列地址就是首個元素的地址,但是vector不一樣!!