基本概念
#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...