重讀Essential C 讀書筆記2

2021-09-30 02:29:45 字數 2360 閱讀 9103

重讀essential c++讀書筆記2

by sssa2000

7/25/2004

第二章:面向過程的程式設計風格

很久以前我也很困惑為什麼要有面向過程物件導向的程式設計風格,雖然現在已經有很深的體會。其實不管是什麼風格,只要能更好地解決問題就是好的風格。

1、傳值和傳址:

lippman

在說明這個問題的時候用了乙個探索的過程,讓初學者沒有一點障礙的被領進了這個問題。

什麼是形參?什麼是實參呢?簡單的說,編寫函式的時候說明的引數就是形參,在呼叫函式的時候的引數就是實參。

當呼叫乙個函式的時候,會在記憶體中建立一塊特殊的區域,叫程式棧。他提供沒個函式引數的儲存空間。

在預設情況下,引數都會被複製乙份傳入程式棧,這就是所謂的傳值,架設給乙個陣列排序,用傳值的方式是不會改變原有數列的,這是就要用到傳址。在引數前面加乙個「

&」即可。

什麼時候該用到傳址?當希望對傳入的物件修改時,或者是如果傳入引數物件過於龐大,用到傳址就會大大提高程式的效率。

當然也可以用指標來傳遞引數,其實也是一樣的,因為指標的本質就是位址。

2、小窺動態記憶體管理

我們知道用

new方法可以宣告動態的記憶體空間,不知道得也很容易從字面了解他的意思。用這個方法宣告的變數不屬於區域性也不屬於全域性,它是建立在

heap

上的,隨時可以銷毀的。 比如

int a[5]=new int [5];

當想銷毀的時候用

delete a

他會銷毀所有陣列的元素。

當然運用不當會造成

memory leak。

3、預設引數:

使用預設引數可以讓我們更加靈活的呼叫函式,預設引數有幾個規則:

首先,如果我們提供了某個預設引數,那麼這個引數右邊的所有引數都應該是預設引數。所以我們要把預設引數放在最右邊。

預設引數只能指定一次,可以在函式宣告的地方也可以再定義的地方,但是不能兩個地方都指定。為提高可見度,作者建議我們放在宣告的地方。

4、關於inline函式

為什麼要由

inline

函式?但乙個函式被很頻繁的呼叫的時候,這個時候編譯器的負擔會很重,我們可以把他宣告為

inline

讓編譯器把函式展開,來減小負擔。方法:在原來的函式前面加上

inline

即可。inline

函式的定義常被置於標頭檔案中。

5、使用模板:

functoin template

template

開場,例如:

template displaly(const string &msg, const vector&vec)

使用的時候也很簡單:

vectorivec; //

這裡可以是任意的型別

string msg;

display(msg,ivec);

6、函式指標:

函式指標給我們帶來了更大的彈性。我們可以用指標來選擇不同的函式以呼叫。

函式指標一般和陣列一起使用:

例如有這麼幾個函式:

const vector*fibon_seq(int size);

const vector*lucas_seq(int size);

const vector*pell_seq(int size);

const vector*pent_seq(int size);

我們打算用乙個函式指標來靈活呼叫,可以這樣:

先宣告乙個函式指標:

const vector* (*seq_ptr)(int);

然後定義乙個陣列:

const vector* (*seq_array)(int)=;

這是乙個存放函式指標的陣列,這樣我們可以設定乙個

index

值:int seq_index

然後我們就可以通過

seq_ptr=seq_array[++seq_index];

來控制呼叫函式了。

7、關於維護標頭檔案:

把函式的宣告放在標頭檔案中是乙個很好的辦法,這樣,當不同的程式呼叫這個函式的時候可以不用每次都宣告。但是定義最好不要放在標頭檔案裡面。

第二章完

重讀《Essential C 》心得

1 using 2 std 是標準鏈結庫所駐之命名空間的名稱。3 所謂命名空間 namespace 是一種將鏈結庫名稱封裝起來的方法,以此避免和應用程式發生命名衝突的問題。4 using namespace std 是讓命名空間中的名稱 的簡單方法。1 一般的初始化 int a 100 2 如果有多...

讀書 重讀C primer

第一次讀 c primer 已是7年前,已不記得是第幾版。只記得當時讀起來舉步維艱,想來是無經驗之故,不得已只得囫圇吞棗,不得要義。再讀已頗為順暢,雖平時c 程式設計不多,但工作中閱讀得太多,而此時c之基本功也幫助c 之理解。但是在有些問題的解釋上,有些 霧裡看花 之感,比如解釋虛函式,多型性。不知...

essential c 讀書筆記5

繼承 將一群相關的類組織起來,並讓我們得以分享期間的共通資料和操作行為 父類 基類 子類 派生類。多型 可以使我們操縱不同類時,如同操縱單一個體。讓基類的pointer 和 reference 得以十分透明的指向任何乙個派生類的物件。動態繫結 解析操作會延遲到執行時才進行。靜態繫結 程式執行之前就已...