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

2021-10-07 06:49:18 字數 1196 閱讀 9775

1.帶引數的main()函式,即main(int argc,charar**),argc是不需要輸入的,編譯器自動推測,ar**是輸入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不一樣!!

18.inline解決什麼問題:頻繁呼叫同乙個函式消耗棧空間。虛函式,while,switch是無法內聯的,虛函式是在執行時才能確定,和內聯相反。類中定義的成員函式的預設值是內聯,宣告的需要自己在類外加inline,就是給編譯器乙個建議讓他成為內聯。內聯是以**複製為代價省去**呼叫

19.lambda注意點:傳參還是傳引用;const還是mutable;返回值型別可以不加(編譯器能判斷出來)

C C 基礎知識

c 基礎知識 定義在class宣告內的成員函式預設是inline函式 進製 問 假設在n進製下,等式 240 12 2880 成立,n值是 a 19 b 18 c 17 d 16 e 15 f 以上都對 答 2 n 2 4 n 1 1 n 2 2 n 3 8 n 2 8 n 1 化簡後為恒等式,故n...

C C 基礎知識

乙個指標可以被多次賦值,但是引用只可以在建立的時候就必須初始化,初始化完畢後就不可改變 乙個指標有它自己的記憶體位址和棧上的大小 x86上面為4byte 但是引用與原有變數共享相同的記憶體位址,但是在棧上仍然占用一些記憶體空間。指標可以指向null,但是引用必須引用乙個有效的物件 乙個指標需要使用 ...

c c 基礎知識

include includeint main else system pause return 0 計算機的原碼用於表示,有符號的前提最高位為符號位,0為正數,1代表負數,其餘各位為數值本身的絕對值,無符號就是資料的絕對值 反碼 正數,反碼與原碼相同 負數,符號位為1,其餘為對原碼取反 補碼 原碼...