C 關於繼承的基礎知識 案例

2021-10-04 08:42:22 字數 2180 閱讀 7836

1.繼承的基本語法

語法:class 子類:繼承方式 父類{};

2.繼承的不同方式

#include

using

namespace std ;

#include

class

person

;class

trumpfamily

:public person //public形式的繼承

;class

pete***mily

:private person //private形式的繼承};

class

candyfamily

:protected person //protected形式的繼承};

void

test01()

void

test02()

void

test03()

int main (

)

3.繼承中物件模型

無論何種方式的繼承,都會將父類中所有的非靜態成員拷貝到子類,只是讀取許可權問題。

4.繼承的構造和析構順序

父類:先構造後析構,子類相反。符合先進後出原則。

5.繼承中同名成員的處理

子類物件可以直接訪問到子類中同名成員

子類物件加作用域可以訪問到父類同名成員

當子類與父類擁有同名的成員函式,子類會隱藏父類中同名成員函式,加作用域可以訪問到父類中同名函式

class

father};

class

son:

public father};

void

test01()

6.繼承中同名靜態成員處理

靜態成員和非靜態成員出現同名,處理方式一致

class

base

static

void

func

(int a)

static

int m_a;};

int base::m_a =

100;

class

son:

public base

static

int m_a;};

int son::m_a =

200;

//同名成員屬性

void

test01()

//同名成員函式

void

test02()

intmain()

7.多繼承問題語法

c++允許乙個類繼承多個類

語法:class 子類 :繼承方式 父類1 , 繼承方式 父類2...

8.菱形繼承的問題

菱形繼承概念

兩個派生類繼承同乙個基類,

又有某個類同時繼承者兩個派生類,

這種繼承被稱為菱形繼承,或者鑽石繼承。

class

animal

;//繼承前加virtual關鍵字後,變為虛繼承

//此時公共的父類animal稱為虛基類

class

sheep

:virtual

public animal

;class

tuo:

virtual

public animal

;class

sheeptuo

:public sheep,

public tuo

;void

test01()

intmain()

總結:

菱形繼承帶來的主要問題是子類繼承兩份相同的資料,導致資源浪費以及毫無意義

利用虛繼承(virtual)可以解決菱形繼承問題。

本文是根據b站內容:《黑馬程式設計師匠心之作|c++教程從0到1入門程式設計,學習程式設計不再難》: 學習整理筆記。

c 繼承基礎知識

1,繼承 在乙個已有的類上建立乙個新的類,類的繼承 新類從已有的類獲得已有的特性,新類為派生類 2,class a public b,public c 關於訪問許可權,參考另一篇博文,3,子類向基類傳資料 1,建構函式,如下 class a class b public a 2,基類成員函式 4,派...

C 基礎知識之類繼承

using system using system.collections.generic using system.linq using system.text namespace classinherit set pubic修飾,它的子類繼承得到 public void shout class ...

CPP基礎知識 關於菱形繼承

一 什麼是菱形繼承?下面先給出乙個圖來說明菱形繼承 以下是菱形繼承的物件模型 圖中,b類繼承了a類 單繼承 c類也繼承了a類 單繼承 d類既繼承了a類,又繼承了b類 多繼承 這樣就構成了乙個 菱形 繼承。下面我們把這個模型用 例項化一下 class a class b public a class ...