C 中繼承與虛函式

2022-07-16 11:00:13 字數 1372 閱讀 8047

一、類與類之間的關係:

1、類與類之間可能會存在共性

2、類與類之間必定會有差異

3、為了節約開發時間和**量,我們在設計時可以把類的共項抽象出來形成乙個基礎類(基類)

4、使用基類+差異生成乙個新的類叫派生類

二、繼承的語法

1、在設計乙個類時如果已有的類中有它需要的成員,它可以從已有的類中繼承哪些成員,被繼承的類叫父類或基類,繼承類叫作派生類或子類。

class 類名 : 繼承方式 基類1,繼承方式 基類2,...

{2、子類會完全繼承父類中的所有成員(包括哪些能訪問的和不能訪問的)。

3、類的設計:

a、根據問題找物件

b、把物件中我們需要的屬性和行為抽象出來

c、把抽象出的結果記錄在乙個class中形成乙個類

d、把class類例項化構造物件

e、物件呼叫成員函式解決問題

繼承就是在對物件抽象的結果進行歸納總結,找出它們的共性形成基類,再把基類+差異派生出子類

4、繼承的優點:**復用

子類在繼承父類後可以節約大量的**,節省開發時間、縮短開發周

5、繼承的缺點:

a、繼承會提高類與類之間的耦合度

b、會降低**的安全性和可維護性

三、使用繼承要注意的問題

1、繼承雖然可以獲取父類中的所有成員,但子類中可以隱藏父類中的同名成員

2、父子類中不可以形成過載,只有在同一作用域下的同名不同參、const屬性的函式才能形成過載

3、父類中的成員在子類中的訪問屬性

父類中的 public 在子類中 可以訪問

父類中的 protected 在子類中 可以訪問

父類中的 private 在子類中 不可以訪問

4、繼承的方式

不同的繼承方式會影響父類成員變數成子類成員後它們的的訪問屬性,也就是繼承來的成員在類外的訪問屬性

public 不變

protected 共有變保護,其它不變

private 全部變成私有的

四、虛函式

1、子類中會隱藏父類中的同名函式,這種關係叫做隱藏

2、在同一作用域下的同名函式,這種關係叫作過載

3、如果父類中的函式新增 virtual 關鍵字,這種函式就叫作虛函式,子類中會覆蓋父類同名的虛函式

4、虛函式是實現多型的基礎

五、繼承的構造、析構、拷貝

1、在繼承時先呼叫父類的建構函式,再呼叫子類的建構函式

2、在繼承中先呼叫子類的析構,再呼叫父類的析構

3、在呼叫拷貝構造時會先呼叫父類的拷貝構造,在呼叫子類的拷貝構造

4、在c++中繼承可以有多個父類,在構造時會按繼承表的順序呼叫父類的建構函式

5、在析構時子類會先呼叫自己的析構函式,然後再按照繼承表的逆序呼叫析構函式

談談c 中繼承中的虛函式

c 是一種物件導向的程式語言的乙個很明顯的體現就是對繼承機制的支援,c 中繼承分很多種,按不同的分類有不同分類方法,比如可以按照基類的個數分為多繼承和單繼承,可以按照訪問許可權分為public繼承 protected繼承和private繼承,按照是否是虛擬繼承可以分為virtual繼承和non vi...

C 中繼承,虛函式的呼叫問題

類繼承 如下 問 呼叫輸出的結果是什麼 class ca void fun2 class cb public ca void fun2 void main 呼叫輸出結果為 cb fun1 cb fun1 ca fun2 原因分析 由於 ca p new cb 中,雖然p是ca指標,但是他指向的虛函式...

虛函式 虛繼承 C

關於虛表,我們就要用到乙個關鍵字 virtual,可以修飾函式,也可以修飾類。類的成員函式被virtual修飾之後,就成為了虛函式 修飾類,主要是虛繼承。在此之前,我們首先要了解乙個概念 物件模型,也就是說,乙個基類形成之後,裡面的成員是怎麼存放的,當派生類繼承基類之後,派生類的成員是怎麼存放的。我...