王老師 C 類的繼承

2021-04-08 16:40:31 字數 2078 閱讀 6760

1.類的繼承

語法: class 匯出類名 : 繼承方式 基類名1, ..., 繼承方式 基類名n 類體 

繼承方式有public, protected, private三種.

匯出類物件構成:(1)基類的物件; (2)匯出類部分.

匯出類中成員的訪問許可權,如下表所示.

繼承方式

基類private成員

基類protected成員

基類public成員

private

private

private

private

protected

private

protected

protected

public

private

protected

public

測試程式:

#include "stdafx.h"

class base;

class d : public base;

class e :private d;

void main()

注: 在類的外部只能訪問類的public成員.

2.不可繼承

(1)建構函式

(2)析構函式

(3)operator =

匯出類建構函式定義:

建構函式(形參表):成員初始化表 函式體

成員初始化表: 基類名(實參表), 資料成員名(實參)

構造函式呼叫次序:

先基類(順序為類繼承時的順序),物件成員(順序是在類體中宣告的順序).

析構函式呼叫次序正好相反.

3.虛函式

(1)向上轉型

例如:

#include "stdafx.h"

class base;

class derived : public base;

void main()

注:q = (derived *)&b;是c語言強制轉換用法,c++中應使用新引入的cast運算.

(2)繫結(binding)

由函式呼叫確定函式體的過程.

靜態繫結:編譯時繫結;

動態繫結:執行時繫結.

(3)虛函式

定義語法:

virtual 值型別 函式名(形參表) 函式體

注意:

a.在類體外定義時,virtual可不用寫

b.在匯出類中,override虛函式時,virtual可不寫,但函式原型必須相同.

特點:使用指標或者引用呼叫虛函式時,具體呼叫哪個函式,由指標所指物件的型別決定.

例子:

#include "stdafx.h"

#include

using namespace std;

class base

void g()};

class derived : public base

void g()};

void main()

(4)純虛函式:只宣告,沒有定義的虛函式

宣告語法:

virtual 值型別 函式名(形參表) = 0;

抽象類:至少含有乙個純虛函式的類.抽象類不能例項化,即不能定義物件.

#include "stdafx.h"

#include

using namespace std;

#include "string.h"

class list;

class node

friend class list;};

class inode : public node

void show()};

class snode : public node

void show()};

class list

void ins(node *p)

void display()}};

void main()

注:虛析構函式的使用略.

《補充》

void insert(node **h)

新增show()方法之後,首先編譯不會出錯,然後呼叫的是子類的方法.

王老師 C 類模板

1.定義語法 template 模板參數列 class 類名 類體 注 模板型別引數 typename id 模板非型別引數 例如 int n 類體中可以出現的型別有 a.基本資料型別 b.使用者自定義型別 c.模板型別引數 d.類名 2.模板例項化 1 從類模板生成具體類的過程 2 時機 定義物件...

王老師 C 運算子過載 轉換函式 第三講

敲了半天,沒提交上,鬱悶,不重寫了 示例程式 1 new include include include using namespace std class com void main 2 過載new delete 示例 在靜態區申請動態物件 include include using namesp...

C 類的繼承

繼承是物件導向程式設計的主要特徵之一,它可以讓你重用 可以節省程式設計的時間。1.object類的作用。object object為別名 是所有類的基類,在c 中所有的類都直接或間接繼承於object,如果在乙個類的宣告中沒有指定它繼承於哪個類則是繼承於object類。2.類繼承的實現。以下定義兩個...