錢能C 語言讀書筆記(二)

2021-05-24 08:34:11 字數 1198 閱讀 7255

1、  有記憶體申請,也就有記憶體釋放。一般來說,需要定義拷貝建構函式的類,也需要析構函式,不需要拷貝建構函式的類,也無須定義析構函式。所以析構函式與拷貝建構函式是成對出項的。

因為析構函式是沒有引數的所以函式形式是唯一的,沒有過載的析構函式。

析構函式在物件的生命週期行將結束的瞬時,由系統自動呼叫。因此,析構函式的呼叫不是通過顯示語句表示的。

2、 

轉換建構函式

建構函式:student(const string & s);即是初始化的物件建立方式,也是在告知如何將string

物件轉換成乙個student物件。

3、 

物件賦值

物件拷貝就是物件賦值

person p1(「ranny」);

person p2 = p1; //物件賦值

類機制中有預設的賦值操作符,只要定義了類,就可以進行物件的賦值操作。但是預設的賦值操作符只管物件本體的複製,如果物件之間要深拷貝的話,則必須自定義賦值操作符。自定義賦值操作符必須注意,原來的物件已經存在,要先將原來的資源釋放掉,然後再進行深拷貝式的複製。

執行結果:

賦值操作的引數與拷貝建構函式的引數是一致的,只有在功能上,賦值操作不管建立,只管複製。

賦值操作(=)的返回值必須是引用返回,這是為了與賦值操作符的語義一致。因為賦值操作的結果是乙個可以遞進操作的左值。

例如:int a;

(a = 6)++; // a = 7;

如果賦值操作是臨時物件,就不會有遞進操作的能力,而且因為要額外建立物件,還要浪費空間和時間效能。所以賦值操作的返回不應該是臨時物件。

4、 

任何類,c++都有乙個預設的賦值操作符,用來進行物件本體的複製。賦值操作符過載一般是在物件本體和物件實體不一致時,為了實現物件本體複製操作以外的操作而進行的。過載了賦值操作符,預設的賦值操作符就不復存在了。一般來說,賦值操作符是與拷貝建構函式和析構函式結對而行的。

5、 

無參建構函式,也許是每乙個類都必須具備,因為沒有無參建構函式的類,無法具有class a ; a a;的建立方式,也無法以預設的方式建立陣列或向量,更無法以該物件的名義申請動態記憶體空間。如果乙個類一定要設計成沒有無參建構函式的形式,那一定是想限制類的建立方式。

6、 

建構函式失敗時的解決辦法為異常處理。

7、 

標頭檔案的友元函式設計成inline,而inline函式若非類成員,則是一定要放在標頭檔案中定義。

錢能C 語言讀書筆記(一)

1 標頭檔案的內容 1.1函式的宣告 int fun void max 1.2全域性資料的宣告 extern int n 1.3型別宣告 class a 1.4全域性常量定義 const float pi 3.1415926 1.5內聯函式定義 inline void fn 1.6模板宣告和定義 t...

錢能C 語言讀書筆記(六)虛函式的限制

1 只有類成員函式才能宣告為虛函式。這是因為虛函式僅適用於有繼承體系的類物件,所以普通函式不能宣告為虛函式。2 靜態成員函式不能是虛函式。因為靜態成員函式不受物件的 即使形式上的 實際上也沒有任何物件的資訊,只有類的資訊 void fn base x 操作不受物件 也就失去了多型的條件。因為編譯是在...

《小狗錢錢》讀書筆記

1 成功的人之所以成功,就是因為他們一直夢想著自己成功的那一天,不停地想象著自己實現了理想時的情形。2 我們的支出永遠是隨著我們的收入而增長的。3 你必須設想自己已經擁有了這些東西,這樣你的乙個小願望才會變成一種強烈的渴望,你想象得越多,你的願望就越強烈。4 第一 為別人解決乙個難題,那麼你就能賺到...