《C Primer (V4)》讀書筆記

2022-05-04 03:51:11 字數 2376 閱讀 9103

第2章 變數和基本型別

1.(p56)如果使用class關鍵字來定義類,那麼定義在第乙個訪問標號前的任何成員都隱式指定為private;如果使用struct關鍵字,那麼這些成員都是public

第7章 函式

1.陣列有兩個特殊的性質,影響我們定義和使用作用在陣列上的函式:一是不能複製陣列(4.1.1節);二是使用陣列名字時,陣列名會自動轉化為指向其第乙個元素的指標。

2.當編譯器檢查陣列形參關聯的實參時,它只會檢查實參是不是指標、指標的型別和陣列元素的型別是否匹配,而不會檢查陣列的長度。

3.陣列形參可宣告為陣列的引用。如果形參是陣列的引用,編譯器不會將陣列實參轉化為指標,而是傳遞陣列的引用本身。在這種情況下,陣列大小成為形參和實參型別的一部分。編譯器檢查陣列實參的大小與形參的大小是否匹配。

void printvalues(int (&arr)[10]) 

intmain() ;

int k[10] = ;

printvalues(&i); //

error

printvalues(j); //

error

printvalues(k); //

ok:argument is an array of 10

}

第15章 物件導向程式設計

1.(p485)使用class保留字定義的派生類預設具有private繼承,而使用struct保留字定義的類預設具有public繼承

2.(p484)為了使size在derived中成為public,可以在derived的public部分增加乙個using宣告

3.(p485)儘管私有繼承在使用class保留字時是預設情況,但這在實踐中相對罕見。

4.(p486)友元關係不能繼承。

5.(p488)引用轉換不同於轉換物件。①可以將派生型別的物件傳遞給希望接受基類引用的函式時,引用直接繫結到該物件,雖然看起來在傳遞物件,實際上實參是該物件的引用,物件本身未被複製,轉換不會再任何方面改變派生型別物件,該物件仍然是派生型別物件。②將派生類物件傳遞給希望接受基類型別物件(而不是引用)的函式時,該派生類物件的基類部分被複製到形參。

6.(p491)派生類建構函式通過將基類包含在建構函式初始化列表中來間接初始化繼承成員(不能直接初始化繼承成員)。初始化列表不指定初始化的執行次序,首先初始化基類,然後根據宣告初始化派生類的成員。

第16章 模版與泛型程式設計

1.(p530)如果是型別形參,我們就知道該形參表示未知型別,如果是非型別形參,我們就知道它是乙個未知值。

2.(p530)與全域性作用域中宣告的物件,函式或型別同名的模版形參會遮蔽全域性名字。

3.(p530)用作模版形參的名字不能在同一模版內部重用。

4.(p531)對於模版可以只宣告而不定義,在同一模版的宣告和定義中,模版形參的名字不必相同。

template  t calc(const t&, const t&);

template

u calc(const u&, const u&);

省略關鍵字或型別說明符是錯誤的:

template  t calc(const t&, const u&);  //

error

5.(p352)在函式模版形參表中,關鍵字typename和class具有相同含義,可以互換使用,兩個關鍵字都可以在同一模版形參表中使用。但是,關鍵字typename是作為標準c++的組成部分加入到c++中的,因此舊的程式更有可能只用關鍵字class。

6.(p532)在模版定義內部指定型別:通過在成員前加上關鍵字typename作為字首,可以告訴編譯器將成員當作型別。

template parm fcn(parm *array, u value)

這些宣告給用來例項化fcn的型別增加了乙個職責:那些型別必須具有名為size_type的成員,而且該成員是乙個型別。

7.(p533)非型別形參:

template  

void array_init(t (parm&)[n])

當呼叫array_init時,編譯器從陣列實參計算非型別形參的值:

int x[42

];double y[10

];array_init(x);

array_init(y);

8.(p534)泛型程式設計的兩個重要原則:模版的形參是const引用;函式體中的測試只用《比較。

讀書筆記 模版 4

模板特化 template int compare const t v1,const t v2 形參為const char 的const 引用 模板特華可以宣告而無須定義,總是包含模板形參說明符,即template 還必須有函式形參表,如果可以從形參推斷模板實參,則不必需顯示指定模板實參 templ...

《大象》讀書筆記 4

九 獲取需求 1 定義邊界 2 發現主角 3 獲取業務用例 4 業務建模 業務用例檢視 業務用例場景 業務用例規約 業務規則 業務物件模型 業務用例實現檢視 業務用例實現場景 包圖 5 領域建模 提出領域問題 分析領域問題 建立領域模型 驗證領域模型 6 提煉業務規則 全域性規則 互動規則 內稟規則...

《effective c 》讀書筆記4

條款41 了解隱式介面和編譯期多型 n classes和templates都支援介面和多型 n 對classes而言介面是顯式的,以函式簽名為中心,多型則是通過虛函式發生於執行期。n 對templates引數而言,介面是隱式的,奠基於有效表示式,多型則是通過template具現化和函式過載解析發生於...