讀有效c 筆記

2021-09-29 22:11:52 字數 3349 閱讀 9271

註冊,提供介面.作業系統.硬體廠商.就相應實現這些介面.將廠商,實現(驅動)加入.

自然就擁有了功能.

#1 指標與引用

指標有一層間接,引用,是直接的.

#2 c++的轉換

c++,盡量用自己的轉,靜轉,動轉,常轉,重轉

雙精 d=靜轉《雙精》c/d;
常轉去除常易屬性.

不能傳常物件非常引數,可先常轉,

動轉是向下轉.失敗拋異常.不能用於缺少虛函式的型別上.

重轉很難移植,在函式指標間進行轉換.

c++不保證,以相同方式表示所有函式指標.

#3 不對陣列使用多型

類繼承的重要特性,可用基類指標/引用操作派生類.

這種指標/引用具有多型性.

好像還是可以.這個應該是類是引用型別.

類是為了封裝的.友元會降低類的封裝性.

#7,8,都是符號 新/刪重寫的注意事項.

#10,寫符號 新,就要寫符號 刪.

這個新和刪操作符.寫這兩個函式,是隱藏,不是過載.申請空間,建構函式在之上繼續初化.

有乙個儲存大小的塊,當類小時,會浪費大量空間.

需要小資料時,可重寫符號 新/刪.申請一塊大記憶體池.然後自己使用.不如一堆向量《整》就完了.

#11 為動態分配記憶體類,宣告拷貝/賦值函式,避免淺拷貝.即實現深拷貝

對指標,動態申請記憶體,放資料.

#15,符號=,返回*本引用.並寫乙個深拷貝.派生類還要考慮基類.檢查給自己賦值的情況.

#18,類的介面要完整且最小.

#20,避免出現資料成員.

人家通過函式.我並不限制這點.

#21,盡量傳引用,

#22,基類要有虛析構函式.純虛函式=0

#25,避免對指標/整數的過載.

#33,內聯缺點

目標**體積增加,降低快取命中率.

內聯函式放標頭檔案,

#35,公有繼承.

公有繼承,表現的是是乙個.

#36,區分介面繼承實現繼承,

介面是放,供外部呼叫.

實現是,是內部邏輯,

有時只希望子類繼承介面,有時可繼承介面與實現

且允許改變.有時,子類同時繼承,但不允許改變.

定義純虛函式,使派生類繼承函式的介面.

純虛函式其實也可以提供定義(即實現).

1.繼承函式的介面/實現,通過虛函式來實現.

2.或者基類保護函式,提供乙個預設實現.繼承類中在其中使用它,並擴充套件.帶預設實現純虛函式更安全.

3,宣告非虛函式,直接繼承.

#37,不重新定義繼承而來的非虛函式.這叫隱藏.

#38,虛函式動態,預設引數,靜態繫結.,重定義預設引數等於,重定義函式

靜態型別:程式中宣告的型別,

動態型別:實際型別.

動轉失敗轉空針.

#40,分層.分層就像顆粒一樣.

大顆粒在上層.

小顆粒在下層.

小顆粒就是乙個個細小的功能體.

#41,區別模板與繼承.

依賴類的行為為繼承,依賴類的型別,則為模板.

當物件型別不影響函式行為,用模板.反之用繼承.

繼承,就是在乙個基礎上搞事情擴充套件.,就是基礎,在這上面繼續搞事情.

模板,就是在乙個模板上加點自定義.

拷貝和賦值為私,防止拷貝/賦值

在基礎類中,對實現類中可能用到的函式加保護.

然後實現類實現他們.這樣,只需要實現這幾個保護函式,就可以實現不同功能的實現類.

元《類 t>類 子:私 基

;

#42,私有繼承.

意味著用基類實現,只繼承實現,忽略介面.

要注意型別安全.

對於基類,只作為其他類的實現來使用.

#43,多繼承.

帶來複雜性,名字的二義性

#45,c++沒執行時檢測.要避免執行時錯誤.

#47,非區域性(全域性,或含)靜態物件,使用前初化.

函式內靜態物件(區域性靜態物件)

將全域性靜態物件,轉移至函式內(區域性靜態物件)

預設生成的析構為非虛析構.取位址,預設返回針.預設拷貝/賦值淺拷貝,按成員拷貝.

#48,重視編譯器的警告.

讀C陷阱與缺陷筆記

1.字元與字串 1 用單引號引起的乙個字元實際上代表乙個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。eg 對於採用ascii字符集的編譯器而言,a 的含義與0141 八進位制 或者97 十進位制 嚴格一致。2 用雙引號引起的字串,代表的是乙個指向無名陣列起始字元的指標,該陣列被雙引號之間...

讀《C程式語言》筆記7

習題2 4 編寫函式squeeze s1,s2 將字串s1中任何與字串s2中字元匹配的字元都刪除 在寫次函式之前,先看下乙個更簡單的函式squeeze char s,int c 從字串s中刪除字元c includevoid squeeze char s,int c int main int i 0 ...

讀《C程式語言》筆記5

字串常量 字串常量也叫字串字面值,是用雙引號括起來的0個或多個字元組成的字串行。雙引號不是字串的一部分,它只用於限定字串。從技術角度看,字串常量就是字元陣列。字串的內部表示使用乙個空字元 0 作為串的結尾,因此,儲存字串的物理儲存單元比括在雙引號中的字元數多乙個。這種表示方法也說明,c語言對字串的長...