C 基礎 繼承

2021-08-03 22:13:43 字數 2408 閱讀 9965

繼承

class 派生類:[訪問限定符] 基類;
/

『public』

『protected』

『private』

類成員函式√√

√友元函式√√

√子類函式√√

×類物件√×

×

子類繼承類父類所有的成員變數和成員函式。與訪問限定 符無關。訪問限定符只是限制了訪問。

子類訪問父類成員變數,把父類成員變數訪問限制符,改為『protected』。

子類內部訪問『public』繼承的父類成員變數

class base;

class derive:public base;

protected:

void

protected_func(){};

private:

void

private_func(){};

};class derive:public base

};

『public』

『protected』

『private』

public 繼承√√

protected 繼承√√

private 繼承√√

子類內部訪問父類成員,只能訪問『public』和『protected』成員。

『public』

『protected』

『private』

public 繼承√×

protected 繼承××

private××

子類只有『public』繼承父類的時候,才能訪問父類的『public』成員,其他都不能訪問。

通常子類使用『public』繼承父類。

子類物件訪問父類成員訪問限定符的變化

|』public』

『protected』

『private』

public 繼承

『public』

『protected』

protected 繼承

『protected』

『protected』

private 繼承

『private』

『private』

* 派生類的建構函式與析構函式的呼叫順序

* 派生類的構造函式呼叫順序:子物件構造、成員變數構造、父物件構造的順序

* 派生類的析構函式呼叫順序:子物件析構、成員變數析構、父物件析構的順序

#include 

using

std::cout;

using

std::endl;

class member

~parent()

};class son:public parent

~son();

int main()

沒有預設建構函式的基數在派生類的初始化,必須在初始化列表中初始化

#include 

using

std::cout;

using

std::endl;

class base

解決方法:

『derived』類中的名稱會隱藏 『base』類中同名的名稱,在』public』繼承中我們可以通過引入』using』宣告。

函式同名的情況總結

名稱

英語過載

overload

重寫(覆蓋)

override

隱藏hide

* 賦值相容規則:在任何需要基類物件的地方都可以使用公有的派生類物件來代替。反之,不可。

向上轉換:派生類物件賦值給基類

向下轉換:基類物件賦值給派生類

派生類物件可以賦值給基類的物件

int main()
引用訪問派生類中由基類繼承來的物件,不能訪問派生類中的新成員

class 類名:[訪問限定符]基類1,[訪問限定符] 基類2

;

多重繼承基類構造順序:??

class 類名:publc

virtual 基類;

虛基類是乙個相對概念,在虛繼承關係中,父類相對於子類是虛基類

虛基類與普通基類的構造順序:先構造虛基類,然後構造普通基類

C 基礎 繼承

如果乙個類的成員被定義成該類的私有成員,那麼只有基類的成員和友元可以訪問類中的私有成員。同時派生類也無法訪問基類的私有成員,派生類的例項物件也無法訪問這些私有成員。如果派生類為公有繼承,基類成員保持自己的訪問級別 基類的public成員為派生類的public成員,基類的protected成員為派生類...

C 繼承基礎

一,繼承和多型 類之間的繼承 基類,父類 成員變數 描述類的屬性 成員函式 功能 派生類 子類 體現出與基類的不同 繼承 基類與派生類之間訪問許可權 1.public繼承 基類裡面的公有成員變數被繼承後在派生類中也是公有的 可以在類外被訪問 基類裡面的保護成員變數被繼承後在派生類中可以被訪問,在派生...

C 繼承之繼承基礎

一 繼承的相關概念 繼承是 種復 段,在繼承關係 子類繼承父類的成員,由此達到復 的 的。通過繼承定義乙個類,繼承是型別之間的關係建模,共享公有的東西,實現各自本質不同的東西。二 三種訪問限定符 繼承關係 三 繼承的重要說明1.子類擁有父類的所有成員變數和成員函式 2.子類就是一種特殊的父類 3.子...