C 中級 多型

2021-10-17 16:07:42 字數 1877 閱讀 4323

基本概念

#include #include using namespace std;

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

class animal

};class dog:public animal

};class pig:public animal

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

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

void mainwork(animal& animal)

int main()

純虛函式和抽象類

#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() {};純虛析構定義。才會走~dog析構。

class dog:public animal

virtual void speak()

string *d_name;

~dog() ;

int main()

多型應用案例

#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) ;

int main()

多型應用案例二-做電腦

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