如果不寫virtual關鍵字會是靜態鏈結編譯
#includeusing namespace std;
class a
protected:
private:
};class b
protected:
private:
};class c: public a
protected:
private:
};//封裝,封裝突破c函式的概念,用類做函式引數的時候,可以使用物件的屬性和方法
//繼承:a b**復用
//多型:可以為以後的**拓展提供介面
//實現多型的三個條件
void conquer(a *base1,b *base2){//多型
if(base1->power() > base2->attack()){
coutcoutcout<<"a win"cout<<"c win"<#includeusing namespace std;
class a
{public:
a(){
p = new char[20];
strcpy(p,"obja");
cout<<"a"<#includeusing namespace std;
class a
{public:
void abc(){
cout<<"abc"<
多型 4 虛析構和純虛析構
下面我們通過乙個例子了解一下。include include using namespace std 父類 我們可以從執行結結果中看到,子類cat的析構函式沒有被呼叫,也就意味著我們在子類的建構函式中申請的一塊堆記憶體沒有被釋放。這樣是很不安全的。解決方法 通過虛析構或者純虛析構 將父類的析構函式變...
繼承(多型和虛析構函式)
派生類不能直接訪問基類的私有成員,必須通過基類方法進行訪問。建立派生類物件時,首先建立基類物件。也就是說基類物件在程式進入派生類建構函式之前被建立。c 使用成員初始化列表來完成。派生類建構函式初始化基類私有成員,採用成員初始化列表。總結 首先,若基類函式需要被派生類重定義,則需要將其在基類宣告為虛函...
虛函式和多型(析構函式)
描述 1.定義乙個類animal,該類中包含資料成員name用來記錄動物的名字,並有乙個虛函式show用於顯示動物的種類。2 定義兩個類cat和dog,都繼承自animal 包含show函式,不但要顯示動物的種類 型別分別 為 cat,dog 還要顯示動物的名字。3 定義乙個tiger類,繼承自ca...