C 三大特性

2021-09-26 06:01:49 字數 2850 閱讀 3065

#何為抽象類:

1. 在c++中,含有純虛函式的類稱為抽象類,它不能生成物件,且不能例項化物件,但是可以例項化指標;

2. 純虛函式:virtual void

lock()

=0;若沒有=

0,則為乙個虛函式

3. 例項化:在物件導向的程式設計中,把用「類建立物件的過程」稱為例項化;將乙個抽象的概念類,具體到該類實物的過程

形式:類名 物件名=new 類名(引數1,引數2……)構成

c++三大特性

封裝: 1.目的是為了增強安全性和簡化程式設計,使用者只需要通過外部介面以及特定的訪問許可權來使用類的成員

注意:::友元函式不是類的成員函式,相當於給類開了乙個後門,可以訪問其私有成員,破壞了其封裝性,但是提高了程式的執行效率;

繼承:派生類把基類的所有成員都繼承過來了,除了建構函式和析構函式

1.使**可以復用

2.三個繼承方式:public protect private

3.基類物件和派生類物件賦值轉換

1)派生類物件可以賦值給基類的物件/指標/引用,但基類的物件不能賦值給派生類物件;基類的指標可以通過強制型別轉換賦值給派生類的指標,但是基類的指標必須是指向派生類物件時才是安全的;

4.派生類的預設成員函式

.1) 派生類的建構函式必須呼叫基類的建構函式初始化基類的那一部分成員。如果基類沒有預設的建構函式,則必須在派生類建構函式的「初始化列表階段」顯示呼叫。

2) 派生類的拷貝建構函式必須呼叫基類的拷貝構造完成基類的拷貝初始化。

3) 派生類的operator=必須要呼叫基類的operator=完成基類的複製。

4) 派生類的析構函式會在被呼叫完成後自動呼叫基類的析構函式清理基類成員。因為這樣才能保證派生類 物件先清理派生類成員再清理基類成員的順序。即派生類物件析構清理先呼叫派生類析構再調基類的析構

5) 派生類物件初始化先呼叫基類構造再調派生類構造。

5.」隱藏「(重定義)--

-子類和父類中有同名成員,子類成員將遮蔽父類對同名成員的直接訪問;在子類成員中可以用基類::基類成員來顯示訪問;

6.友元關係不能被繼承,也就是說基類友元不能訪問子類私有和保護成員

7.解決菱形繼承二義性和冗餘問題

----1)訪問明確化,如d.a:

:_name

2) 虛擬繼承

![虛擬繼承**]

多型:通俗來說就是多種形態,具體點就是完成某個行為,當不同的物件區完成時會產生不同的狀態

多型:分為動態多型和靜態多型

靜態多型:在編譯期間的行為。例如函式過載

動態多型:在程式執行期間

1.可以使使用者以相同的方式處理不同型別的物件;舉個例子--買票,小孩半票,大人全票,軍人優先

2. 多型是在不同繼承關係的類物件,去呼叫同一函式,產生了不同的行為

3. 構成多型的條件:

1)必須通過基類的指標或者引用呼叫虛函式

2)被呼叫的函式必須是「虛函式」,且派生類必須對基類的虛函式進行「重寫」

虛函式的重寫(覆蓋):

1)派生類中有乙個跟基類「完全相同」的虛函式(返回值型別,函式名字,引數列表完全相同),稱子類的虛函式重寫了基類的虛函式

虛函式重寫的兩個例外:

1)協變--

---派生類重寫基類虛函式時,與基類虛函式「返回值型別不同」,即基類虛函式返回基類的指標或引用,派生類返回派生類的指標或引用

**如下:

![在這裡插入描述]

2) 析構函式重寫--

--基類與派生類的析構函式的名字不一樣,如果基類的析構函式為虛函式,此時派生類只要定義,無論是否加virtual關鍵字,都與基類的析構函式構成重寫;

![在這裡插入描述]

c++11中override和final

1) final:修飾虛函式,表示該虛函式不能再被繼承

一般形式: virtual void

drive

() final

2)override: 檢查派生類是否重寫了基類某個虛函式。如果沒有重寫,則報錯

一般形式:virtual void

drive

() override

過載,重寫(覆蓋),重定義(隱藏)的區別:

1.過載:兩個函式在同一作用域

功能類似的「同名函式」,這些同名函式的「形參列表」(引數個數/型別/順序)必須不同

2.重寫:兩個函式分別在基類和派生類的作用域

兩個函式必須是一模一樣的虛函式

3.重定義:兩個函式分別在基類和派生類的作用域

函式名相同,簡單來說,如果兩個基類和派生類的同名函式不構成重寫就是重定義

C 三大特性

過載 不同函式具有相同的函式名,但是他們的的引數型別或者引數個數不同,使用時通過函式的引數來區分呼叫 在同乙個域類 覆蓋 在基類和派生類中,派生類中的函式對基類中同名同引數的虛函式重新實現 在不同的類中 隱藏 派生類函式把基類中同名函式遮蔽了,不帶virtual或者同名不同參 在不同的類中 虛函式的...

c 三大特性

所謂封裝就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏.封裝是物件導向的特徵之一,是物件和類概念的主要特性.簡單的說,乙個類就是乙個封裝了資料以及操作這些資料的 的邏輯實體。在乙個物件內部,某些 或某些資料可以是私有的,不能被外界訪問。通過...

C 三大特性 封裝

封裝 封裝可以隱藏實現細節,使得 模組化 封裝是把過程和資料報圍起來,對資料的訪問只能通過已定義的介面。在物件導向程式設計上可理解為 把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。資料抽象是指,只向外界提供關鍵資訊,並隱藏其後台的實現細節,即...