C 中類和物件呼叫及生成

2021-09-09 05:49:15 字數 2146 閱讀 3955

1.c++有三大特徵:封裝,繼承,多型

封裝:就是把普通的物件進行封裝,物件的屬性設為私有的,對外提供get和set方法,其他類只能通過get和set對物件屬性值進行操作。

其中封裝的三個訪問限定符:1.public:任意位置訪問;

2.protected: 本類,子類中訪問;

3.private:  本類中訪問;

繼承:是發生在兩個類之間,乙個類繼承另乙個類是說這個類屬於另乙個類,具有另乙個類的所有屬性和方法,同時它還可以有另乙個類不具備的方法和屬性。

多型:是建立在繼承的基礎上的,乙個父類物件可以產生多個不同的子類物件,根據這些子類物件的不同可以具備不同的方法,也就是說表現出了不同的形態即多型。

2.c++中struct也可以當類來使用(struct class)

結構體中的預設訪問限定符:公有都可以訪問,私有限定訪問。

3.成員方法的實現

<1>類中:內聯函式

<2>類外:普通函式

4.類中的6個預設函式

<1>建構函式:用來初始化物件的成員變數。 

特點: 

1. 函式名與類名相同 

2. 沒有返回值 

3. 新物件被建立時,由編譯器自動呼叫,且在物件的生命週期內僅呼叫 

一次 4. 建構函式可以過載,實參決定了呼叫哪個建構函式 

5. 無參建構函式和全預設的建構函式都認為是預設的建構函式,並且預設的建構函式只能有乙個 

6. 有初始化列表(可以不用) 

7. 如果沒有顯式定義時,在必要情況下,編譯器會合成乙個預設的建構函式  

8. 對於單個引數建構函式,可以將其接受引數轉化成類型別物件。用explicit修飾建構函式,抑制由建構函式定義的隱式轉換,explicit關鍵字類內部的構建宣告上,在類的定義體外部的定義上不再重複。

<2>析構函式:與建構函式的功能相反,用於銷毀物件,由編譯器自動呼叫。 

特點: 

1. 析構函式在類名(即建構函式名)加上字元~ 

2. 析構函式無引數無返回值 

3. 乙個類有且只有乙個析構函式。若未顯示定義,系統會自動生成預設的析構函式 

4. 物件生命週期結束時,c++編譯系統系統自動呼叫析構函式 

5. 注意析構函式體內並不是刪除物件,而是做一些清理工作

<3>拷貝建構函式:

函式名也為類名,只有單個形參,而且該形參是對本類型別物件的引用(常用const修飾),這樣的建構函式稱為拷貝建構函式。拷貝建構函式是特殊的建構函式,建立物件時使用已存在的同類物件來進行初始化,由編譯器自動呼叫

特性: 

1. 對於建構函式的過載、建構函式的性質,拷貝建構函式均滿足 

2. 引數必須使用類型別物件引用傳遞 

3. 如果沒有顯式定義,必要情況下,系統會自動合成乙個預設的拷貝建構函式。預設的拷貝建構函式會依次拷貝類的資料成員完成初始化。若無必要,則編譯器會通過複製的方式來完成對物件的拷貝功能。

<4>賦值操作符過載:賦值操作符過載是操作符過載的一種

<5>取位址操作符過載: 賦值操作符過載是操作符過載的一種

<6>const修飾的取位址操作符過載:

當&過載為被const修飾的成員函式時,系統會預設地對返回值加上const修飾。 

若對呼叫此過載時,若不顯式呼叫自己定義的取位址過載,則系統會呼叫它自己預設的函式

1.開闢記憶體

2.記憶體空間進行初始化,呼叫建構函式(賦資源)

3.構造析構函式:

析構函式是不可以過載的;

4.拷貝建構函式:用已存在的物件生成乙個相同型別的新物件

預設的拷貝建構函式是乙個淺拷貝(拷貝的函式與原函式指向同一記憶體,釋放後,原函式的指標就變為了野指標)

5.賦值運算賦過載函式:把乙個已存在的物件賦給相同型別的已存在物件

實現過程:判斷自賦值;釋放舊資源;開闢新資源;賦值;

在呼叫類的過成中會產生臨時量

臨時量:1.內建型別生成的臨時量為常量(在暫存器中)

2.自定義型別生成的臨時量為變數(在記憶體中)

3.隱式生成的臨時量為常量

4.顯示生成的臨時量為變數

生成的臨時物件:

生存週期:表示式結束

臨時物件的優化:

生成臨時物件的目的:生成新物件(以生成臨時物件的方式生成新物件)

引用能提公升臨時物件的生存週期

把臨時物件提公升和引用變數相同的生存週期

C 類和物件(中)

一 類的六個預設成員函式 1 初始化和清理。建構函式完成初始化,析構函式完成清理 2 拷貝複製 拷貝建構函式使用同類物件建立物件,賦值過載是把乙個物件賦值給另乙個物件 3 取位址和過載 主要是對普通物件和const物件取位址 二,建構函式 1 建構函式是乙個特殊成員函式,名字和類名相同,建立類型別物...

C 類和物件(中)

define crt secure no warnings 1 includeusing namespace std include if 0 建構函式是乙個特殊的成員函式,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資料成員 都有 乙個合適的初始值,並且在物件的生命週期內只呼叫一次 ...

C 類和物件(中)

目錄 1.建構函式 2.析構函式 3.拷貝建構函式 4.賦值運算子的過載 5.const成員 6.取位址及const取位址操作符過載 乙個類中,如果沒有任何成員,稱為空類。任何乙個類中,都會包含6個預設的成員函式,即使是空類也會自動生成6個預設成員函式,如下為類中的6個預設成員函式 注意 預設成員函...