基本概念
#include #includeusing
namespace
std;
//抽象類,無法例項化物件。
class
animal
};class dog:public
animal
};class pig:public
animal
};//
1.在編譯階段,已確定函式位址為animal了。
在執行階段,因為有了virtual修飾,vfptr就在vfptb表中修改確定成傳入的物件函式位址了。
void mainwork(animal&animal)
intmain()
純虛函式和抽象類
#include usingnamespace
std;
class
base ;
class son:public
base ;//
子類重寫父類純虛函式,才能例項化物件
};int
main()
虛析構和純虛析構
#include usingnamespace
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 usingnamespace
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 #includeusing
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...