c 複習第六章 繼承

2021-10-08 09:17:01 字數 3034 閱讀 5569

原因:

通過繼承機制可以利用已有的資料型別來定義新的資料型別,新的類不僅擁有舊類的成員,還擁有新定義的成員。

乙個b類繼承於a類,或稱從類a派生類b。這樣的話,類a成為基類(父類), 類b成為派生類(子類)。

派生類中的成員,包含兩大部分:

一類是從基類繼承過來的,一類是自己增加的成員。

從基類繼承過過來的表現其共性,而新增的成員體現了其個性。

語法格式:

class man:public person

三種繼承方式:

public : 公有繼承

private : 私有繼承

protected : 保護繼承

從繼承源上分:

單繼承:指每個派生類只直接繼承了乙個基類的特徵

多繼承:指多個基類派生出乙個派生類的繼承關係,多繼承的派生類直接繼承了不止乙個基類的特徵

繼承之後的訪問許可權:

子類物件在建立時會首先呼叫父類的建構函式

父類建構函式執行完畢後,才會呼叫子類的建構函式

當父類建構函式有引數時,需要在子類初始化列表(引數列表)中顯示呼叫父類建構函式

析構函式呼叫順序和建構函式相反

繼承中同名物件的處理

當子類成員和父類成員同名時,子類依然從父類繼承同名成員

如果子類有成員和父類同名,子類訪問其成員預設訪問子類的成員(本作用域,就近原則)

在子類通過作用域::進行同名成員區分(在派生類中使用基類的同名成員,顯示使用類名限定符)

#includeusing namespace std;

class base

void printf()

~base()

public:

int m_data; };

class zi:public base

~zi()

void printf()

//重點

int &getbasedata()

public:

int m_data;

};int main(int argc, char const *ar**)

建構函式(包括拷貝構造)

析構函式

operate == 運算子

靜態成員函式和非靜態成員函式的共同點:

他們都可以被繼承到派生類中。

如果重新定義乙個靜態成員函式,所有在基類中的其他過載函式會被隱藏。

如果我們改變基類中乙個函式的特徵,所有使用該函式名的基類版本都會被隱藏。

靜態成員函式不能是虛函式(virtual function).

從多個類繼承可能會導致函式、變數等同名導致較多的歧義。

class base1

};class base2

void func2()

};//派生類繼承base1、base2

class derived : public base1, public base2

;int main()

要解決上述問題:只能通過顯示指定呼叫那個基類的版本。

這種繼承所帶來的問題:

羊繼承了動物的資料和函式,鴕同樣繼承了動物的資料和函式,當草泥馬呼叫函式或者資料時,就會產生二義性。

草泥馬繼承自動物的函式和資料繼承了兩份,其實我們應該清楚,這份資料我們只需要乙份就可以。

#includeusing namespace std;

class bigbase

void func()

public:

int mparam;

};class base1 : public bigbase

public:

//int mparam;

};class base2 : public bigbase

public:

//int mparam;

};class derived : public base1, public base2

public:

//int mparam;

};int main()

class bigbase

void func()

public:

int mparam;

};class base1 : virtual public bigbase{}; //virtual

class base2 : virtual public bigbase{};

class derived : public base1, public base2{};

int main()

以上程式base1 ,base2採用虛繼承方式繼承bigbase,那麼bigbase被稱為虛基類。

通過虛繼承解決了菱形繼承所帶來的二義性問題。

第六章複習

一.迴圈語句 while do while.for 1.while 迴圈控制表示式 括號內容為真時執行,假時退出。語句序列 迴圈體 2.do while 迴圈控制表示式 真實執行假時退出。注意 該迴圈體內語句至少執行一次。3.for 初始化表示式 迴圈控制表示式 增值表示式 使用的一般原則 迴圈次數...

第六章 繼承和派生

第六章 繼承和派生 6.1 繼承和派生的基本概念 這種通過特殊化已有的類來建立新類的過程,叫做 類的派生 原來的類叫做 基類 新建立的類則叫做 派生類 另一方面,從類的成員角度看,派生類自動地將基類的所有成員作為自己的成員,這叫做 繼承 基類和派生類又可以分別叫做 父類 和 子類 有時也稱為 一般類...

第六章繼承和多型

二 方法覆蓋和多型 三 終極類與抽象類 1 is a 關係public class employee public class manager2 extends關鍵字 3 object類 4 單重繼承 5 物件轉型 casting 向上轉型 employee e new manager 子類mana...