C 讀書筆記

2021-07-05 01:12:44 字數 1645 閱讀 7729

什麼是封裝?

在物件導向程式設計來講,就是把資料和針對該資料的操作,統一到乙個class裡。實際上還包括以標頭檔案的格式將一些型別定義,函式宣告,封裝至某個標頭檔案。還有namespace語法等。

建構函式:

什麼是建構函式?通俗的講,在類中,函式名和類名相同的函式稱為建構函式。它的作用是在建立乙個物件時,作某些初始化的工作(例如對資料賦予初值)。c++允許同名函式,也就允許在乙個類中有多個建構函式。如果乙個都沒有,編譯器將為該類產生乙個預設的建構函式。建構函式上惟一的語法限制是它不能指定返回型別,甚至void 也不行。不帶引數的建構函式:一般形式為 類名 物件名()帶引數的建構函式:不帶引數的建構函式,只能以固定不變的值初始化物件。帶引數建構函式的初始化要靈活的多,通過傳遞給建構函式的引數,可以賦予物件不同的初始值。一般形式為:建構函式名(形參表);建立物件使用時:類名 物件名(實參表);構造函式引數的初始值:建構函式的引數可以有預設值。當定義物件時,如果不給出引數,就自動把相應的預設引數值賦給物件。一般形式為:建構函式名(引數=預設值,引數=預設值,……);

析構函式:

當乙個類的物件離開作用域時,析構函式將被呼叫(系統自動呼叫)。析構函式的名字和類名一樣,不過要在前面加上 ~ 。對乙個類來說,只能允許乙個析構函式,析構函式不能有引數,並且也沒有返回值。析構函式的作用是完成乙個清理工作,如釋放從堆中分配的記憶體。乙個類中可以有多個建構函式,但析構函式只能有乙個。物件被析構的順序,與其建立時的順序相反,即後構造的物件先析構。

派生類:

利用繼承機制,新的類可以從已有的類中派生。那些用於派生的類稱為這些特別派生出的類的"基類"。

單一繼承 

在「單一繼承」這種最普通的形式中,派生類僅有乙個基類。

在類的層次設計中,可以發現一些普遍的特性,即派生類總是同基類有「kind of」關係。

另乙個值得注意點是book既是派生類(從printeddocument中派生),也是基類(*****backbook是從book派生的)。下面的例子是這種類層次的乙個輪廓性的說明。

class printeddocument ;

//book是從printeddocument中派生的

class book:public printeddocument ;

//*****backbook是從book中派生

class *****backbook: public book ;

printeddocument作為book的直接基類,它同時也是*****backbook的非直接

基類。直接基類和非直接基類的區別在於直接基類出現在類說明的基類表中,而非直接基類不出現在基類表中。

在繼承中,派生類含有基類的成員加上任何你新增的成員。結果派生類可以引用基類的成員(除非這些成員在派生類中重定義了)。當在派生類中重定義直接基類或間接基類的成員時,可以使用範圍分辨符(::)引用這些成員。考慮下面的**:

class document

;//實現類document的printnameof函式

void document::printnameof()

class book:public document

;//class book 建構函式

book::book (char *name,long pagecount)

;注意,book的建構函式(book::book)具有對資料成員name的訪問權。  

C 讀書筆記

1.內建函式 inline必須在呼叫前進行完整定義,語 define相同,但是消除了不安全性 例 inline float circle float r 2,函式原型 語法形式 返回型別 函式名 參數列 1 函式原型的參數列中不包含引數的名字,而只包含型別 2 函式定義由函式說明部分和函式體構成 3...

C 讀書筆記

c陷阱和缺陷 1.賦值符優先順序比邏輯比較低,賦值表示式的結果為賦值後的結果 2.編譯器掃瞄符號使用貪心法,盡量選擇最長字元的符號串,如a 理解為a 而不是a 3.為相容老版本編譯器,不同符號之間最好加空格,如a 1可能理解為a 1,應該改為a 1 4.老版本編譯器,8進製數以0開始,後面可以加超過...

c 讀書筆記

再看一本叫做 stl lectures 的書,裡面有一段 讓我學習了 include includeusing namespace std template const t max const t x,const t y int main 我說這段 讓我學習,不是說它寫的多好 因為這段 在g 4.8...