C 中級 多型

2022-02-15 03:42:42 字數 2166 閱讀 4198

基本概念

#include #include 

using

namespace

std;

//抽象類,無法例項化物件。

class

animal

};class dog:public

animal

};class pig:public

animal

};//

1.在編譯階段,已確定函式位址為animal了。

在執行階段,因為有了virtual修飾,vfptr就在vfptb表中修改確定成傳入的物件函式位址了。

void mainwork(animal&animal)

intmain()

純虛函式和抽象類

#include using

namespace

std;

class

base ;

class son:public

base ;//

子類重寫父類純虛函式,才能例項化物件

};int

main()

虛析構和純虛析構

#include using

namespace

std;

//通過虛析構和純虛析構才能走到子類的析構。

/*用來解決通過父類指標釋放子類物件;

如果子類沒有堆區資料。就用不著它們;

擁有純虛析構函式的類也屬於抽象類;

*/class

animal ;

//1.至為虛析構。才會走~dog析構。

virtual ~animal() = 0;//

2.純虛析構宣告。

};animal::~animal() {};//

2.1純虛析構定義。才會走~dog析構。

class dog:public

animal

virtual

void speak()

string *d_name;

~dog()

};};void work(animal*aml) ;

intmain()

多型應用案例

#include using

namespace

std;

//抽象類

class

abstractdrink ;

};class coffee :public

abstractdrink ;

virtual

void brew() ;

virtual

void pourincup() ;

virtual

void putanother() ;

};class milk :public

abstractdrink ;

virtual

void brew() ;

virtual

void pourincup() ;

virtual

void putanother() ;

};void work(abstractdrink*abs) ;

intmain()

多型應用案例二-做電腦

#include #include 

using

namespace

std;

//零件

class

cpu;

class

gpu;

class

memory;

//廠商

class amd:public

cpu};

class nivada :public

gpu

};class kinston :public

memory

};//

實體class

pc;

void

made() ;

~pc()

};private

: cpu*ccpu;

gpu*ggpu;

memory*mmemory;

};int

main()

C 中級 多型

基本概念 include include using namespace std 抽象類,無法例項化物件。class animal class dog public animal class pig public animal 1.在編譯階段,已確定函式位址為animal了。在執行階段,因為有了vi...

C 中級 事件

定義 從概念上理解,事件就是某乙個物件向另外乙個物件傳送乙個訊息,事件的傳送方負責傳送,接收方負責接收。詳解事件,我硬講,你是肯定不能理解的,因為事件和委託非常相似。事件其實是對委託的封裝 封裝沒忘吧?就是保護 委託,就是發起方明確告訴接收方,我需要什麼。然後接收方就負責去執行。事件,就是我給你傳送...

C 中級 繼承

基本語法 include include using namespace std 語法 子類類名 public 父類類名 class animal void walk string args class dog public animal string name class cat public a...