C 03 物件導向 3

2021-10-19 22:37:44 字數 1984 閱讀 4485

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...