出處:
場景
分析:
每個類的節點都必須提供它自己的
calc
方法,所以採用多型進行操作。我們將
node
節點和binnode
節點設計為抽象類,抽象類是不能例項化的類,它們只能作為其他類的父類。乙個包含乙個或多個純虛函式的類稱為抽象類,乙個沒有具體實現的函式稱為純虛函式,只有從乙個抽象類派生的類以及為所有純虛函式提供了實現**的類才能被例項化。一般來說,若乙個類有乙個純虛函式,它可能同時需要乙個虛析構函式。所以類設計層次如下:
//設定乙個虛析構函式
virtual double calc () const = 0;//
設定乙個純虛函式,也就是
=0的意義所在。
}; class numnode: public node//
繼承了node
double calc () const;
private:
const double _num;
}; class binnode: public node
~binnode ();
protected://
使用protected
的原因是它可以被派生類直接使用,這樣我們不用提供
setter
和getter
來進行訪問了。
node * const _pleft;
node * const _pright;
}; class addnode: public binnode
double calc () const;
}; class multnode: public binnode
double calc () const;
}; #endif
tree.cpp
// (c) bartosz milewski 2000
#include "tree.h"
#include
double numnode::calc () const
binnode::~binnode ()
double addnode::calc () const
double multnode::calc () const
int main ()
注:要是用
c語言進行實現的時候我們不可以避免使用
switch
語句,這個例子也說明在
c++中僅在不能使用多型的時候使用
switch
語句。
參考文獻:
出處:
C 多型解析
今天我們,來將將c 的三大特性之一的 多型性 為什麼會有這個呢?因為,我們編寫 時,有的時候,當物件不同時,就需要呼叫不同的函式。在這個時候就需要使用的多型了。再說類的多型性之前我先來說說物件這個概念。物件的概念可以分為兩種型別 所謂的靜態型別,就是一般的型別 而動態型別,舉個例子來說就像是賦值相容...
C 多型解析
因為,我們編寫 時,有的時候,當物件不同時,就需要呼叫不同的函式。在這個時候就需要使用的多型了。再說類的多型性之前我先來說說物件這個概念。物件的概念可以分為兩種型別 所謂的靜態型別,就是一般的型別 而動態型別,舉個例子來說就像是賦值相容規則裡說的 乙個基類物件可以用 派生類物件來賦值 在這裡的這個物...
C 多型繼承解析
在c 中,類的概念是最重要的,類就是實物的乙個模版,或是一種抽象的方法和資料的封裝,每用類宣告乙個變數,那我們就叫做類的例項化,在類的生存區域,會呼叫建構函式,在臨界區則會呼叫析構函式,構造的物件在記憶體中的表示就是類中的資料成員依次構造,如class string 在記憶體中這個string類共有...