C 特性 繼承

2021-09-24 22:43:42 字數 1452 閱讀 4844

學習c++有一段時間了,今天就來總結一下c++的第二個特性——繼承。

首先介紹一下繼承的概念,所謂的繼承就是用已有的類(基類),根據實際需要定義新的類(派生類)的過程,其實質是**復用。繼承關係如下圖所示:

當然,派生類的資料並不是全部來自於基類,也可以根據需要在派生類中新增額外的成員變數和成員方法。

繼承的語法結構:類標識 派生類類名:繼承方式:基類類名

繼承方式有3種:public protected private

其中,採用public繼承方式的派生類訪問不受限制,採用protected繼承方式的派生類只允許在本類和子類類中訪問,而採用private繼承方式的派生類只允許在本類類中訪問

說到這裡可能會有人產生疑問,是不是派生類的訪問限定只跟繼承方式有關呢?其實並不是這樣的,

不同訪問限定符修飾的基類,採用不同的繼承方式繼承後,其派生類的訪問限定也是不一樣的。其關係如下圖所示:

繼承應該考慮的問題

1、派生類的構造和析構順秀

系統在建立派生類物件時,會先呼叫基類的建構函式,用於初始化繼承的資料成員,然後再呼叫派生類的建構函式,用於初始化新增的資料成員。派生類的建構函式總是呼叫乙個基類的建構函式,並使用初始化器列表指明要使用那個基類的建構函式,否則將使用預設的基類的建構函式。

銷毀物件時,與呼叫建構函式的順序相反,系統會先呼叫派生類的析構函式,然後再呼叫基類析構函式。

2、派生類和基類的關係

派生類可以使用基類非私有的方法;

基類指標(或引用)可以不進行顯式型別轉換的情況下指向(或引用)派生類物件;

基類指標(或引用)只能呼叫基類的方法,不能呼叫派生類的方法。

3、繼承的範圍

派生類****不能通過繼承繼承基類建構函式、析構函式和賦值運算子

一般,派生類在建立物件時,會使用成員初始化列表呼叫基類的建構函式,用來建立派生物件的基類部分,否則將使用基類的預設建構函式。在繼承鏈中,每乙個類都可以使用成員初始化列表將資訊傳遞給相鄰的基類。

派生類在銷毀物件時,程式會先呼叫派生類的析構函式,然後再呼叫基類的析構函式。如果基類有預設析構函式,編譯器將為派生類生成預設析構函式。一般,基類的析構函式設定為虛的。

賦值運算子不能繼承的原因是,派生類繼承的方法的特徵標與基類完全相同,但賦值運算子的特徵標隨類而異。

總的來說,派生類通過繼承繼承了基類除建構函式、析構函式賦值運算子之外的所有成員,包括型別和作用域。

C 三大特性 繼承

繼承 類的繼承,就是新的類從已有類那裡得到已有的特性。原有的類稱為基類或父類,產生的新類稱為派生類或子類。派生類的宣告 class 派生類名 繼承方式 基類名1,繼承方式 基類名2,繼承方式 基類名n 在 c 中,乙個派生類可以同時有多個基類,這種情況稱為多重繼承。如果派生類只有乙個基類,稱為單繼承...

C 特性之繼承分析

私有繼承的作用 多繼承非菱形多繼承 c 繼承分為,公有繼承 保護繼承 私有繼承,下面通過例子來分析下三種繼承各自的特性。首先我們先定義乙個基類,此基類包含有三種成員,分別為公有成員,保護成員,私有成員。class parent protected void printprotected privat...

c 三大特性之 繼承

繼承 乙個非常自然的概念,現實中的很多事情都是具有繼承性的。類似於自己繼承父母的特性,這也是繼承的特性 而繼承的上層稱為基類,下一層就叫做派生類。格式 class 派生類 繼承方式 基類 繼承 例如 include using namespace std class person class stu...