#include
using
namespace std;
class
base
virtual
~base()
void
show()
private
:int _ma;};
class
derive
:public base
~derive()
virtual
void
show()
void
test()
private
:int _mb;};
intmain()
執行結果:
base()
derive()
base:
:show()
~derive()
~base
()
#include
using
namespace std;
class
base
virtual
~base()
virtual
void
show()
void
show
(int i)
private
:int _ma;};
class
derive
:public base
~derive()
private
:virtual
void
show()
private
:int _mb;};
intmain()
執行結果:
base()
derive()
derive:
:show()
~derive()
~base
()
說明:多型與成員函bai數的訪問許可權是沒有關du系的, 即兩回事.
基類定義了虛函式, 並且是public的。那麼子類只要override 虛函式 無論放在什麼樣dao的訪問許可權下(private,protect,public), 都以基類的訪問許可權為準, 即是public的.
#include
using
namespace std;
class
base
virtual
~base()
virtual
void
show
(int i =10)
//虛函式
private
:int _ma;};
class
derive
:public base
~derive()
;virtual
void
show
(int i =20)
//虛函式
private
:int _mb;};
intmain()
若要在虛函式中賦值,不要再基類虛函式中賦予預設值。編譯器呼叫基類的函式進行了值得初始化。
執行結果:
base()
derive()
derive:
:show()
, i=10~
derive()
~base
()
#include
using
namespace std;
class
base
void
clear()
virtual
~base()
virtual
void
show()
private
:int _ma;};
intmain()
執行結果:
程式崩潰。
在base類的建構函式中呼叫clear()函式,將剛構造的物件b清空了。p呼叫show(),非法訪問記憶體,程式崩潰!
#include
using
namespace std;
class
base
virtual
~base()
virtual
void
show()
private
:int _ma;};
class
derive
:public base
~derive()
virtual
void
show()
private
:int _mb;};
intmain()
在建構函式裡呼叫虛函式,都是靜態繫結。base類構造函式呼叫base::show();derive類構造函式呼叫derive::show()
執行結果
base()
base:
:show()
derive()
derive:
:show()
~derive()
~base
()
c 中繼承 多型
有了繼承,指向基類型別的指標或引用就可以被用來指向派生類型別的物件。然後就可以編寫程式來操縱這些指標或引用而不用考慮它們所指向的物件的實際型別。用乙個基類指標或引用來操縱多個派生型別的能力被稱為多型性。在c 中,多型性分為兩種,一種稱為編譯時多型,另一種為執行時多型 分別解釋下 1.編譯時多型,也就...
C 中繼承和多型的研究
在這個部分,我將構建兩個類a和b,b是a的子類。namespace csharppolymorphism class b a class program 執行結果為 i m a,my value a,got value a i m b,my value b,got value b i m a,my ...
java中繼承和多型區別
嘿嘿,舉乙個比較容易理解的例子。主人公 李啟銘 李剛 經典語錄 我爸是李剛 例子開始 從李啟銘說的那句 我爸是李剛,是很有科學依據的,用程式設計的原理看,它符合繼承和多型的物件導向程式設計的這2大特性。先說一說,繼承,繼承就是子類可以繼承父類中的屬性和方法。包括私有的屬性和方法,只是由於私有的方法無...