C 知識點整理

2021-10-25 15:43:06 字數 1099 閱讀 4255

函式的呼叫約定

(字首自增和字尾自增的區別:

字首自增就是i++, 字尾自增就是++i。乙個變數使用字首或字尾方式增1的結果是一樣的。但,如果涉及到增1後的賦值,字首增1會把增1後的值賦值給其它變數,而字尾增1會把增1前的值賦值給其它變數。

char型別自增方式:取值範圍是-128~127,當超過127時會溢位,返回到-128。我經過程式檢驗,令char a = num(整數);當取在asc||範圍以外的時候無輸出。

四種型別轉換:

(造成記憶體洩漏的情況:

(函式指標:

(指向函式的返回值)(*指標名稱)(指向函式的引數列表)

struct必須有建構函式,預設成員變數是public,可以繼承

如果const位於號的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量。

如果const位於號的右側,const就是修飾指標本身,即指標本身是常量。

new和delete

new首先申請位址空間,然後呼叫建構函式。

delete,首先呼叫析構函式,將成員銷毀,然後呼叫free,釋放物件空間(函式體等等)。

如果new了一定要delete否則會造成記憶體洩漏。如果沒有用new建立例項,物件是建立在棧上的,那麼系統會自動呼叫析構函式,清除棧上的物件空間。

建構函式和析構函式:

建構函式用來建立例項進行初始化。預設建構函式指沒有引數傳入的建構函式。系統同樣有預設的建構函式。在我們執行進入函式體的時候會對所有成員進行初始化。當我們使用初始化列表會省去這一過程,所以初始化列表會比較快。

當我們定義了有引數的建構函式的時候,系統會預設呼叫,但如果我們顯示呼叫預設建構函式就會出錯。當我們沒有有引數的建構函式,使用a* a = new a(),如果我們定義了預設構造,即無引數,會呼叫,如果什麼建構函式都沒有,則使用系統預設建構函式。

靜態變數static會在編譯階段進行零初始化。至於不同型別有著不同的零值。鏈結之後開始執行會再次初始化,通過值或者表示式。

類內靜態變數的使用要明白定義和宣告的區別。類內在標頭檔案是宣告,在類外進行定義。宣告不需要記憶體,而定義是建立記憶體,建立物件。宣告的目的和標頭檔案存在的目的是一樣的,避免命名衝突,重複定義,以及拆分函式為單個檔案方便改動的思想。

c 知識點整理

1.c 中類是否支援多繼承?請說明原因。答 不支援,需要用介面來實現多繼承 2.我們都知道乙個類可以有多個建構函式,並且c 會在我們建立類的時候預設的提供乙個無參的建構函式,當我實現了另外乙個有引數的建構函式的時候,我還能呼叫無引數的建構函式嗎?請說明原因。答 不能,因為一旦你實現了乙個建構函式,c...

知識點整理

一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...

知識點整理

一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...