C 中的繼承模式

2021-10-22 17:41:27 字數 2272 閱讀 9101

總結繼承是oop設計中的重要概念。在c++語言中,派生類繼承基類有三種繼承方式:私有繼承(private)、保護繼承(protected)和公有繼承(public)。

繼承是c++中的重要特性,派生類可以訪問基類中的protected和public成員

先上**:

#include

using

namespace std;

class

base

;void base::

func_pri()

void base::

func_pro()

void base::

func_pub()

class

derive

:public base

;void derive::

function()

intmain()

醬在這裡用一段簡單地**為大家說明了繼承的規則。派生類只能訪問基類的public和protected成員,無法訪問private成員;若要呼叫類中private成員,要在類內部使用this指標傳參(關於this指標的用法,醬在後續文章中會為大家進一步整理)。這裡derive是public base,是公有繼承。

上表:

首先要確立乙個概念:無論是公有、私有還是保護繼承,說到底它們都屬於繼承,滿足繼承的基本規則(如上表)。無論是private、protected還是public,對於直接向基類繼承的派生類來說幾乎沒有影響(即俗稱的「子代」而非「孫子代」)。上面的**class derive:public base換成private base和protected base,結果都是一樣的。

影響的是派生類的繼承,即「孫子代」。

先上**:

#include

using

namespace std;

class

base

;void base::

func_pri()

void base::

func_pro()

void base::

func_pub()

class

derive

:protected base

;void derive::

function()

class

derive_sec

:public derive

;void derive_sec::

func_sec()

intmain()

這段**執行後的結果是public protected。

可以看出的是derive_sec類(子二代)可以呼叫的是base基類的protected和public成員函式,而無法呼叫private成員函式。

先上**:

#include

using

namespace std;

class

base

;void base::

func_pri()

void base::

func_pro()

void base::

func_pub()

class

derive

:private base

;void derive::

function()

class

derive_sec

:public derive

;void derive_sec::

func_sec()

intmain()

通過結果來看,derive_sec類(子二代)對base基類中private、protected和public的成員函式均不能呼叫,但其仍然可以呼叫子一代的公有函式。

在三種模式的繼承中,我們可以看出當子一代設定為公有繼承/保護繼承基類時,子二代對基類protected、public成員變數可以訪問,而對private變數不可訪問;當子一代設定為私有繼承基類時,子二代對基類private、protected、public成員變數均不能訪問.

我們可以得出這樣的結論:當基類和派生類具有直接繼承關係時,按照上文所述繼承規則即可;若派生類是經過對基類的多重繼承得來的,則要考慮之前的繼承模式。

private繼承模式在對類之間的封裝性有要求時,可以考慮使用。

C 中的繼承模式深入詳解

繼承是oop設計中的重要概念。在c 語言中,派生類繼承基類有三種繼承方式 私有繼承 private 保護繼承 protected 和公有繼承 public 繼承是c 中的重要特性,派生類可以訪問基類中的protected和public成員 先上 include using namespace std...

C 中的繼承

一 繼承 什麼是繼承 繼承是允許重用現有類去建立新類的過程。分類的原則是乙個類派生出來的子類具有這個類的所有非私有的屬性。1 繼承c 中的類 c 不支援多重繼承,c 類始終繼承自乙個基類 如果未在宣告中指定乙個基類,則繼承自 system.object 派生類繼承基類的語法如下 using syst...

C 中的繼承

繼承,資料抽象和動態繫結是物件導向程式設計的核心思想。使用繼承,可以定義相似的型別並對其相似關係進行建模。通過繼承聯絡在一起的類構成一種層次關係,通常在層次關係的根部有乙個基類,其他類則直接或間接地從基類繼承而來,這些繼承得到的類稱為派生類。下面就讓我們一起來 繼承中的一些常見問題。1.繼承方式cl...