C Primer基礎部分總結(2)

2021-10-25 10:09:14 字數 1910 閱讀 3960

東陽的學習記錄

給空語句加上注釋

多餘的空語句並非總是無害的

switch語句中的case標籤必須是整型常量表示式

任何兩個case標籤的值不能相同

case分支後若沒有break,最好注釋說明

如果某個case分支需要定義區域性變數,請把區域性變數置於內(為了防止出現未初始化就使用的情況)

while迴圈的迴圈變數的作用域,在迴圈退出後仍可以訪問。

在基於範圍的for迴圈中不要新增增加元素的**

在對異常處理的過程中,我們必須時刻清楚異常何時發生,異常發生後程式如何確保物件有效、資源無洩漏、程式處於合理狀態,等等

實參是形參的初始值

定義在塊內部的內建型別將不會預設初始化

區域性物件只會在第一次定義時初始化

在標頭檔案中進行函式宣告, 標頭檔案應該被包含到相應的原始檔中

關於巢狀包含的問題,只需在其中乙個將標頭檔案只在原始檔中包含

引用呼叫和值呼叫,引用呼叫引用的形參是實參的別名;值呼叫,實參是形參的初始化值

指標形參,同樣不會改變原指標的值,但是可以改變指標所指物件的值

使用引用的乙個好處是避免拷貝,無需改變原值,最好使用常量引用

引用引數隱式返回

當用實參初始化形參時會自動忽略頂層const

除非必要,盡量使用常量引用

三種管理指標形參的方法:1. 使用標記指定陣列長度 2. 使用標準庫規範(begin, end)3. 顯示地傳遞大小

含有可變引數的函式:initializer_list形參,必須相同型別

值是以變數初始化的形式被返回

不要返回區域性物件的引用或指標

當傳遞乙個非常量物件或指向非常量物件的指標,編譯器會有限選用非常量型別的版本

預設實參、內聯函式、constexpr函式

區域性變數不能作為預設實參

內聯說明只是向編譯器發出的請求

ndebug預處理變數

實參是否是常量可以作為函式選擇的決定依據

對於函式指標的理解,bool (*pf)(const string&, const string&)

返回指向函式的指標(這部分比較難理解)

定義在類內部的函式是隱式的inline函式

成員函式通過乙個名為this指標的額外隱式引數來訪問呼叫方的物件

const 的作用是修改隱式的this指標的型別,this指標預設是頂層const, 再加乙個const則底層也變為const

編譯器對類的定義分兩步走,1. 編譯成員的宣告 2. 成員函式體

const在構造過程中可以向其寫值

謹慎使用預設建構函式

拷貝、賦值和析構:儘管編譯器能夠替我們合成拷貝、賦值和銷毀的操作,但是當類需要分配類物件之外的資源時,合成的版本常常會失效。

友元函式不是類的成員

有元函式不受類作用域限制

內聯函式應該定義在標頭檔案中

mutable關鍵字可以在const函式內修改類的資料成員

當我們提供乙個類內初始值時,必須以=或者花括號

每個類定義了為一的型別

建立例項物件前必須先被定義,但是有個例外,類包含指向他自身型別的引用或者指標

有元函式不能傳遞

友元函式定義在類的內部時,在外部使用需要宣告

如果沒有在初始化列表種顯式地初始化成員,則該成員在建構函式體之前執行預設初始化

盡量使用列表初始化而不是賦值

常量物件和引用物件必須初始化,不能使用賦值操作

變數初始化順序與宣告順序一致

委託建構函式的執行順序,像乙個棧一樣

類的隱式型別轉換和explicit(只出現在宣告處)關鍵字

聚合類的初始化方法

靜態成員所有例項共享,沒有this指標

靜態成員可以是不完全型別

靜態成員通常不需要在類的內部初始化,若需要則應使用常量表示式初始化

c primer 函式部分總結

1,實參是函式形參的初始值,函式的每次呼叫都要經歷形參的初始化過程 每次呼叫函式都會重新建立它的形參 並且實參的數量必須與形參相匹配或者實參的型別能轉換成形參的型別。2,函式的返回型別不能使陣列和函式,但是可以是函式的指標和指向陣列的指標,返回型別可以是void。3,形參 也定義與函式體內部 和函式...

C primer 部分術語

c primer 可謂是經典的不能在經典的一本書 這本書的每一章節背後都有些術語,我按順序摘抄了些.以後補全 c primer 術語 第一章 argument 實參 block 塊 buffer 緩衝區 built in type 內建型別 cerr cinclass 類 class type 類型...

C Primer 陣列部分

陣列是一種復合型別,與vector類似陣列也是存放型別相同的物件的容器 所以不能存放引用 這些物件沒有名字,需要通過其位置訪問。陣列本身是乙個物件。與vector不同的是陣列的大小是固定的,不能隨意的向陣列中增加元素。首先是陣列的宣告,陣列的宣告形如 a d 其中a是陣列的名字,d是陣列的維度,維度...