讀書筆記之 C 大學教程(第2版)

2022-05-13 15:09:06 字數 2069 閱讀 5942

這是《c++大學教程》第2版的一些記錄。第二版顯得比較舊,具體時間我沒有查到,從其中的內容看來應該是c++標準推出之前。

1. c++中獲取隨機數

srand函式只要在程式中呼叫一次即可得到所需要的隨機化結果,多次呼叫是多餘的,會降低程式效能。

由rand函式直接產生的值總是取值為:

0常見錯誤:

用srand函式代替rand函式產生隨機數是個語法錯誤,因為srand函式不返回值。

2. c++中的儲存類

c++提供了4個儲存類說明符:auto,register,extern和static。識別符號的儲存類說明符可以確定其儲存、範圍和連線。

識別符號的儲存類確定了識別符號在記憶體中存在的時間。有些識別符號的存在時間很短,有些則重複生成和刪除,有些存在於整個程式的執行期間。

識別符號的作用域是程式中能引用這個識別符號的區域。有些識別符號可以在整個程式中引用,而有些識別符號只能在程式中的有限部分引用。

識別符號的連線確定多原始檔程式中,只有當前原始檔或是在任何正確宣告的原始檔中識別識別符號。

3. 為了獲得程式的清晰性和高效能,許多c++程式設計師喜歡通過指標將可修改引數傳遞給函式,不可修改的小引數按值呼叫傳遞,而不可修改的大引數常用引用傳遞給引數。

4. 建構函式與析構函式的執行順序

全域性範圍中定義的物件的建構函式在檔案中的任何其他函式(包括main)執行之前呼叫(但不同檔案之間全域性物件建構函式的執行順序是不確定的)。當main終止或呼叫exit函式時呼叫相應的析構函式。

static區域性物件的建構函式只在程式首次執行到達物件定義時呼叫一次,對應的析構函式在main終止或呼叫exit函式時呼叫。

不要返回對private資料成員的引用

const物件的建構函式和析構函式不需要const宣告。建構函式應允許修改物件,這樣才能正確的將物件初始化。析構函式應能在物件刪除之前進行清理工作。

7. this指標

物件的this指標不是物件本身的一部分,即this指標不在對該物件進行sizeof操作的結果中體現。但this指標在每次非staitc成員函式呼叫物件時作為第乙個隱式引數傳遞給物件(通過編譯器)

this指標的型別取決於物件型別和使用this的成員函式是否宣告為cosnt。在employee類的非常量成員函式中,this的型別是employee*const(employee物件 的常量指標)。在employee類的常量成員函式中,this指標的型別為cosnt employee*const(常量employee物件 的常量指標)

8.為了節約儲存空間,每個類的每個成員函式只有乙個副本,該類的每個物件都可以呼叫這個成員函式。另一方面,每個物件又有自己的類資料成員副本。

9. this指標的乙個有趣的用法是防止物件賦值給自己。自我賦值可能在物件包含動態分配記憶體的指標時導致嚴重的錯誤。

10.函式原型和定義中都要指定const

const成員函式可以用非const版本過載。編譯器根據物件是否宣告為const自動選擇所用的過載版本。

const物件應初始化。要用成員初始化值向建構函式提供類物件資料成員的初始值。

11.友元關係宣告可以放在類中任何地方。

類的友元函式在類範圍之外定義,但有權訪問類的所有成員。

12.虛函式與效能

多型性(它是用虛函式和動態關聯實現的)是高效的,程式設計師使用這種功能對系統效能的影響極小。

虛函式和動態關聯使得多型性程式設計和switch邏輯程式設計形成了對照。c++優化編譯器通常能夠生成至少和手寫的基於switch邏輯的**具有同樣效率的**。對大多數應用程式而言,多型的開銷是可以接受的。但有時則不能接受多型的開銷,例如效能要求很高的實時應用程式。

在stl元件中是不使用多型和虛函式的,這是為了避免執行開銷,從而達到符合stl特定要求的最優性能。

13.c++中的虛繼承是針對多重繼承中可能出現的問題而提出的。菱形繼承

C 標準庫(第2版)讀書筆記

目錄 c 11新特性 template表示式內的空格 nullptr t constexpr variadic template 可變長模板 alias template 帶別名的模板 lambda 持續更新ing vector vec ok in each c version vector vec...

《JUnit實戰(第2版)》讀書筆記

主要了解junit,如何安裝 執行junit 要點static public void assertequels double expected,double actual,double delta 主要了解junit的機制和生命週期 要點 test注釋 public的 不帶任何引數 返回void ...

讀書筆記之 C 程式設計思想 第2卷

c 程式設計思想 第2卷 主要是介紹的標準c 中一些比較高階的功能,包括異常處理,模板,標準庫演算法,容器,執行時型別資訊rtti。最後還包括兩部分,設計模式和併發。這兩部分是挺好的。但是,我現在對設計模式和併發也了解的不多,所以,現在是這兩部分略過先,等以後有時間再回過頭來學習設計模式和併發。第1...