2. 多型
1.1 繼承
1.2 封裝
2.1 什麼多型?
void
liu(animal* p)
2.2 實現多型的前提
2.3 為什麼父類指標可以指向子類物件?
//可能會覆蓋掉其他資料 所以存在安全隱患
2.4 為什麼要有多型?
struct dog
void
run()}
;struct cat
void
run()}
;struct pig
void
run()}
;void
liu(dog* p)
void
liu(cat* p)
void
liu(pig* p)
intmain()
struct pig :
public animal
void
run()}
;// liu的函式只需要寫乙個
void
liu(animal* p)
intmain()
2.5 多型怎麼實現的?struct animal
virtual
void
run()}
;struct dog:
public animal
void
run()}
;struct pig :
public animal
void
run()}
;void
liu(animal* p)
intmain()
2.6 虛函式的實現原理?
;// eax=cat物件的位址 0x010105f0
mov eax,dword ptr [p]
// edx=cat物件前4個位址的值,即虛表的位址0x 00dbab68
mov edx,dword ptr [eax]
//eax=edx位址的值,即speak函式的位址
mov eax,dword ptr [edx]
call eax
C 03 物件導向 2
2.析構函式 destructor 3.成員變數初始化 4.成員訪問許可權,繼承方式 5.初始化列表和預設引數的使用 1.1建構函式 構造器 是什麼?有什麼用?1.2 特點?class person person int m age 會呼叫建構函式 person person intmain per...
C 筆記 03物件導向3
20160803.cpp 定義控制台應用程式的入口點 01 41 37 include stdafx.h include using namespace std 建構函式的初始化列表 面向過程 程式 資料 演算法 物件導向 程式 物件 物件 訊息 在乙個程式裡物件所屬的類是不允許單獨存在的,組合 聚...
C 03 運算子過載
運算子過載的目的 讓物件的運算表現的和內建型別的運算一樣。運算子過載函式,返回值一般不會是void,例如 連續的 就無法用void實現,一般用類型別的引用,可以保證連續運算。class ccomplex 複數類 ccomplex ccomplex const ccomplex src mreal s...