C 繼承和派生

2021-10-03 20:58:14 字數 2026 閱讀 2746

基類:可以派生出其他的類,也稱父類

子類:從基類派生出來的類

//location類

class

location

intgety()

private

:int x,y;};

void location::

initl

(int xx,

int yy)

void location::

move

(int xoff,

int yoff)

//rectangle

class

rectangle

:public location

intgetw()

private

:int h,w;};

void rectangle::

initr

(int x,

int y,

int w,

int h)

首先理解三種訪問級別:

派生類物件生成時,要呼叫建構函式進行初始化。編譯器的呼叫過程是先呼叫基類的建構函式,對派生類中的基類資料進行初始化,然後再呼叫派生類自己的建構函式,對派生類的資料進行初始化工作。析構函式的呼叫正好相反。

3.1 派生類建構函式

建構函式不可以被繼承

只有當基類存在預設引數的建構函式時候,派生類才可以省略對基類建構函式的呼叫

派生類建構函式的工作:

建構函式格式:

《派生類名》(《派生類建構函式總參數列》)

:《基類建構函式》(《參數列1>),

《子物件名》(《參數列2>)

若某項的參數列為空,則該項可從成員初始化列表中省略,表示使用預設建構函式初始化該基類子物件;

#include

classa~

a()private

:int he, we;};

classb:

public a~b

()private

: a obj1;

int len;

};

3.2 派生類析構函式

析構函式不可以被繼承

析構函式的執行順序與建構函式嚴格相反

#include

classb;

b::b()

b::b

(int i)

b::~b(

)void b::

print()

const

classc:

public b

;c::c(

)c::c(

int i,

int j):b

(i)c::~c

()void c::

print()

const

void

main()

/************

輸出:  b's constructor called.

c's constructor called.

5  6

c's destructor called.

b's destructor called.

****************/

4.1 多繼承派生類申明形式
classa:

public b2,

public b1//和此順序有關

4.2 多繼承建構函式格式
a::a(

int i,

int j,

int k,

int l):b1

(i),

b2(j),bb

(k)

派生建構函式存在順序:

4.3 二義性問題(見ppt)

c 繼承和派生

通常子類不加修飾的延續父類的特徵,我們把它叫做繼承 而子類在延續父類特徵的基礎上又新增自己的新特徵,叫做派生。擁有乙個基類的繼承是單一繼承,擁有多個基類的繼承是多重繼承。class 派生類名 派生型別 基類名 注 括號內是派生類自己的成員和成員函式。乙個類的私有成員只能被它的成員函式和友員訪問,不能...

C 繼承和派生

在c 語言中,乙個 派生類可以從乙個 基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為 多繼承。派生類的定義格式 單繼承的定義格式如下 1 2 3 4 class 派生類名 繼承方式 基類名 public 表示公有繼承 private 表示私有繼承 prote...

C 繼承和派生

1 繼承概念 1 繼承是類之間定義的一種重要關係 2 基本語法 class child public parent1,public parent2 3 parent稱基類 父類 child稱派生類 子類 4 繼承方式 public,private,protected.5 重要說明 a 子類擁有父類的...