構造 析構 物件與繼承

2021-07-11 08:49:11 字數 793 閱讀 1901

c++學習筆記之二

上一節講到了建構函式,這一節繼續講解。

1)建構函式可以被過載,如:

object()

object(int object)

//這兩個函式是具有相同的函式名,而引數個數或引數型別不同,這就是過載。

2)析構函式

特點:沒有返回值,以『~』打頭,且函式在物件銷毀時呼叫(即作用域結束時被呼叫)//出了作用域即被呼叫。

全域性變數的生命週期在函式結束時仍被呼叫。

沒寫構造時系統自動新增構造與析構函式。

物件的析構與構造呼叫時,其成員的析構與構造也被呼叫;先呼叫成員,後釋放成員。

成員與物件:成員先呼叫構造,而析構後呼叫。

3)基本型別的初始化:

object():x(1),y(2){}

4)動態建立物件

new/delete代替malloc 與free

優點:(1)返回值是指標,不需要強制型別轉化。

(2)建立物件時可以為其初始化:int *p=new int(5);//初始化為5;delete p;

int* p=new int [5];//開闢了5個int單元,delete p;

刪除後指標置為空,以免誤傳;

new與delete的作用:

new:先申請一塊記憶體,後呼叫建構函式

delete:先呼叫析構,後釋放記憶體。

malloc 得到的是記憶體而非物件。

注:new多個物件時必須有預設建構函式。

5)繼承

class a:public b;//定義方式

繼承的構造與析構

子類物件在構造時,先呼叫父類的建構函式,然後再呼叫自己的建構函式,析構順序相反。看下測試 include include using namespace std class grandparent public grandparent cout 輸出結果如下 結果很明顯了,子類構造時,先呼叫父親的建...

C 繼承與構造析構

include 子類物件可以當作父類物件使用 子類物件可以直接賦值給父類物件 子類物件可以直接初始化父類物件 父類指標可以直接指向子類物件 父類引用可以直接引用子類物件 子類物件構造時,需要呼叫父類建構函式對其繼承得來的成員進行初始化 子類物件析構時,需要呼叫父類析構函式對其繼承得來的成員進行清理 ...

繼承的構造與析構

賦值相容規則是指在需要基類物件的任何地方都可以使用公有派生類的物件來替代。在共有public繼承的條件下 子類物件可以當作父類物件使用 子類物件可以直接賦值給父類物件。子類物件可以直接初始化父類物件。父類指標可以直接指向子類物件。父類引用可以直接引用子類物件。舉例 include include u...