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.類繼承的實現。以下定義兩個...