函式的呼叫約定
(字首自增和字尾自增的區別:
字首自增就是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不允許重複鍵出...